android - 切换按钮未显示在 ActionBar 中?

标签 android android-actionbar android-switch android-togglebutton

我在 ActionBar 中放置了一个 Switch,但它似乎没有显示,我也不明白为什么。这是我的尝试:

create_post_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".CreatePost">

    <item
        android:id="@+id/toggle_test"
        android:title=""
        app:showAsAction="ifRoom"
        android:orderInCategory="1"
        android:actionViewClass="android.widget.Switch" />

    <item
        android:id="@+id/send_post"
        android:orderInCategory="2"
        android:title="Send"
        app:showAsAction="ifRoom" />

</menu>

CreatePost.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.create_post_menu, menu);
    // Get the action view used in your toggleservice item
    final MenuItem toggleservice = menu.findItem(R.id.toggle_test);
    final Switch actionView = (Switch) toggleservice.getActionView();
    actionView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // Start or stop your Service
        }
    });
    return super.onCreateOptionsMenu(menu);
}

我尝试实例化开关,看看是否可以设置一个监听器来查看您是否单击开关的打开或关闭,但我似乎无法实例化它,因为我在尝试创建 actionView 时遇到错误CreatePost.java 中的 变量。谁能帮我这个?谢谢!

最佳答案

您收到错误,因为您的 actionView 为空。更改您的 Switch 菜单代码

<item
     android:id="@+id/toggle_test"
     android:title=""
     app:showAsAction="ifRoom"
     android:orderInCategory="1"
     android:actionViewClass="android.widget.Switch" /> 

app:actionViewClass="android.widget.Switch"仔细看一下,会是app而不是android这样...

<item
      android:id="@+id/toggle_test"
      android:title=""
      app:showAsAction="ifRoom"
      android:orderInCategory="1"
      app:actionViewClass="android.widget.Switch" /> 

现在像这样改变你的java代码

final MenuItem toggleservice = menu.findItem(R.id.toggle_test);
Switch actionView=(Switch) MenuItemCompat.getActionView(toggleservice );
actionView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // Start or stop your Service
    }
});

关于android - 切换按钮未显示在 ActionBar 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34573040/

相关文章:

android - ByteArray Property Too Large to send within putExtra ("obj", obj) of intent 打开另一个 Activity 时

android - 自定义按下硬件按钮时弹出的Android Overflow菜单

java - 不同 Activity 中的元素不会折叠

Android - setVisibility 导致 java.util.ConcurrentModificationException

java - 如何将函数作为参数从java传递给kotlin方法?

android - Cordova 4.1.2 推特整合

android - 更改 appcompat 的 SearchView 文本和提示颜色

android - 使用 HoloEveryWhere 单击 ActionBar 上的 SearchView 图标时,如何隐藏子菜单?

Android,使用自定义背景时隐藏库存切换?

java - 单击切换开关后 MapView 未返回正常状态