在“选项”菜单上切换 Wifi 状态

发布于 2024-12-24 17:38:06 字数 361 浏览 2 评论 0原文

我想在 Android 的选项菜单中切换 Wifi 的状态。我想通过显示两个图标来扩展其功能,一个表示“打开”,另一个表示“关闭”。它应该以这样的方式工作:当用户按下菜单键时:

  1. 他应该看到 Wifi 的当前状态“打开”或“关闭”
  2. 图标必须根据其状态“打开”或“关闭”显示
  3. 当用户单击时Wifi 选项应该切换 Wifi 的状态并相应地更改图标

这可以在选项菜单中执行吗?

关于如何根据其状态更改图标有什么想法吗?

到目前为止,我可以通过将用户带到不同的活动来切换 Wifi 状态。但如果我可以在选项菜单中实现它。这将使该应用程序更易于使用。

感谢您的投入和宝贵的时间。

I would like to toggle the state of Wifi in options menu in Android. I would like to extend its functionality by showing two icons one for "switched on" and the other for "switched off". It should work in such a way that when a user presses the menu key:

  1. He should see current status of Wifi "on" or "off"
  2. The icons must be shown according to its state "on" or "off"
  3. When the user clicks the Wifi option it should toggle the state of Wifi and also change the icon accordingly

Is this possible to do in the options menu ?

Any ideas as to how to change the icons according to its state ?

So far I am able to toggle the Wifi state by taking the user to a different activity. But if I can achieve it in the options menu. It would make the app more easy to use.

Thank you for your input and for your time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

简美 2024-12-31 17:38:06

这里是 wifi 开/关的代码:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.wifistate:
        final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        if(wifi.isWifiEnabled()){
            wifi.setWifiEnabled(false);
            Drawable drawable = getResources().getDrawable(R.drawable.off);
            item.setIcon(drawable);
        }else{
            Drawable drawable = getResources().getDrawable(R.drawable.on);
            item.setIcon(drawable);
            wifi.setWifiEnabled(true);
        }
        break;

    }
    return true;

}

manifest.xml(添加权限)

<uses-permission
    android:name="android.permission.ACCESS_WIFI_STATE" />

menu.xml 文件:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/wifistate"  android:title="Off" android:icon="@drawable/off"/></menu>

here is the code for wifi on/off :

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.wifistate:
        final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        if(wifi.isWifiEnabled()){
            wifi.setWifiEnabled(false);
            Drawable drawable = getResources().getDrawable(R.drawable.off);
            item.setIcon(drawable);
        }else{
            Drawable drawable = getResources().getDrawable(R.drawable.on);
            item.setIcon(drawable);
            wifi.setWifiEnabled(true);
        }
        break;

    }
    return true;

}

manifest.xml (add permission)

<uses-permission
    android:name="android.permission.ACCESS_WIFI_STATE" />

menu.xml file :

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/wifistate"  android:title="Off" android:icon="@drawable/off"/></menu>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文