Java 如何在Android中检查复选框是否选中?

Java 如何在Android中检查复选框是否选中?,java,android,android-layout,android-menu,Java,Android,Android Layout,Android Menu,我正在使用以下代码在Android操作栏中添加复选框: <item android:id="@+id/action_checkbox" app:actionViewClass="android.widget.CheckBox" android:title="@string/action_check" app:showAsAction="always" /> 如何获取上述复选框的值,无论它是否在android中作为菜单项选中?您可以使用i

我正在使用以下代码在
Android操作栏中添加
复选框

 <item
    android:id="@+id/action_checkbox"
    app:actionViewClass="android.widget.CheckBox"
    android:title="@string/action_check"
    app:showAsAction="always"
    />


如何获取上述
复选框的值,无论它是否在android中作为
菜单项选中?

您可以使用
isChecked()
获取
复选框的选中状态:

CheckBox checkBox = (CheckBox) findViewById(R.id.action_checkbox);

if(checkBox.isChecked())
   // do something
else 
   // do something else

您可以使用
isChecked()
获取
复选框的选中状态

CheckBox checkBox = (CheckBox) findViewById(R.id.action_checkbox);

if(checkBox.isChecked())
   // do something
else 
   // do something else
有关这些简单问题,请参阅

此外,选项ItemSelected是菜单的一部分。

请参阅,以了解此类简单问题


选项ItemSelected也是菜单的一部分。

您管理java代码的地方
复选框
单击事件

 @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.menu_main, menu);
       MenuItem check = menu.findItem(R.id.action_checkbox);
       CheckBox c_box =(CheckBox) check.getActionView();
       c_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if(b){
                Toast.makeText(getActivity(), "checked",
                        Toast.LENGTH_SHORT).show();

            }else{
                Toast.makeText(getActivity(), "unchecked",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });
      return true;
   }
你的菜单看起来不错

<item
android:id="@+id/action_checkbox"
app:actionViewClass="android.widget.CheckBox"
android:title="@string/action_check"
app:showAsAction="always"
/>


希望它能起作用。。如果您遇到任何问题,请告诉我。

您管理的java代码
复选框
单击事件

 @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.menu_main, menu);
       MenuItem check = menu.findItem(R.id.action_checkbox);
       CheckBox c_box =(CheckBox) check.getActionView();
       c_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if(b){
                Toast.makeText(getActivity(), "checked",
                        Toast.LENGTH_SHORT).show();

            }else{
                Toast.makeText(getActivity(), "unchecked",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });
      return true;
   }
你的菜单看起来不错

<item
android:id="@+id/action_checkbox"
app:actionViewClass="android.widget.CheckBox"
android:title="@string/action_check"
app:showAsAction="always"
/>



希望它能起作用。。如果您遇到任何问题,请告诉我。

谢谢您的回答,但是OnOptions Item Selected中的何处?如果您询问在何处使用此代码,那么您可以在任何地方使用它,因为
findViewById()
将在任何上下文中工作。它是一个操作栏菜单项。因此,它在任何地方都不起作用:)据我所知,
findViewById()
可以从任何地方获取视图,因为它可以从应用程序中的所有上下文都可以访问的
R
文件获取视图。感谢您的回答,但是在OnOptions ItemSelected中的何处?如果您询问在何处使用此代码,然后您可以在任何地方使用它,因为
findViewById()
可以在任何上下文中工作。它是一个操作栏菜单项。因此,它在任何地方都不起作用:)据我所知,
findViewById()
可以从任何地方查看,因为它从
R
文件中获取视图,该文件几乎可以从应用程序中的所有上下文访问。我遇到了一个异常,即
尝试在空对象引用上调用虚拟方法“android.view.view android.widget.LinearLayout.findViewById(int)”
at
复选框c=(复选框)rl_viewBag.findViewById(R.id.checkBox);
您使用此方法的地方是片段还是活动?您是否检查了rl_viewBag它是否为null或是否有引用我复制了您上面的全部代码并粘贴它,因为我遇到异常,即
尝试调用虚拟方法“android.view.view android.widget.LinearLayout.findViewById(int)”'在空对象引用上
at
复选框c=(复选框)rl_viewBag.findViewById(R.id.CheckBox)
您使用这种方法的地方是片段还是活动?您是否检查了rl_viewBag它是否为空或是否有引用我复制了您上面的全部代码并粘贴它,即使它是,然后参考文档。如果您没有做过研究,不要浪费人们的时间。对于不需要教授的问题也是如此。啊!别介意,伙计们:)@SnowTauren实际上你也没有在官方文件上搜索它,因为没有关于“如何使用菜单项中的复选框”和“它有什么问题”的信息?“为什么这些复选框没有显示在应用程序栏上”。是吗?但没关系:)@Def我想你应该先试试谷歌:)但没关系,请参考这个问题:@AmitPal我知道这些评论都很老了。但这个简单的问题对未来的人们是有好处的。任何想要了解这一点的人都会发现这个问题(像我一样),并比浏览文档更快地看到答案,甚至比查阅文档还要快。如果你没有做过研究,就不要浪费别人的时间。问题不教也是如此。啊!没关系,伙计们:)@SnowTauren实际上你也没有在官方文件上搜索它,因为没有关于“如何使用菜单项中的复选框”和“它有什么问题”的信息?“为什么这些复选框没有显示在应用程序栏上”。是吗?但没关系:)@Def我想你应该先试试谷歌:)但没关系,请参考这个问题:@AmitPal我知道这些评论都很老了。但这个简单的问题对未来的人们是有好处的。任何寻找这一点的人都会发现SO问题(像我一样),并且比浏览文档更快地看到答案