我的工具栏有一个radiogroup(有2个radiobuttons)和一个按钮。我可以在item.getItemId() == R.id.button
方法上使用onOptionsItemSelected
轻松处理按钮点击,但是当我在我的无线电组中使用它时,它永远不会运行。 (例如:item.getItemId() == R.id.mySwitch
),我猜它是一个放射性组,而不是一个可选对象。
但主要的问题是我有一个我的无线电组的监听器,它采用onOptionsItemSelected
方法。监听器在应用程序启动时不起作用,我必须激活onOptionsItemSelected
,然后监听器才能工作。我使用放在无线电组旁边的按钮来激活onOptionsItemSelected
,之后一切正常。
有没有办法调用onOptionsItemSelected
onCreate方法或让我的监听器激活而不使用虚拟按钮来激活它?
注意:这些对象在我的工具栏上
主要活动
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem item = menu.findItem(R.id.mySwitch);
item.setActionView(R.layout.customtoggle);
item.setCheckable(true);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.button) {
System.out.println("Button pressed!");
}
//The code below never gets runned
if (item.getItemId() == R.id.mySwitch) {
System.out.println("WORKS");
}
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.toggle);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// find which radio button is selected
if (checkedId == R.id.rbtn1) {
System.out.println("Radio btn 1 pressed");
} else if (checkedId == R.id.rbtn2) {
System.out.println("Radio btn2 pressed");
}
}
});
return super.onOptionsItemSelected(item);
}
Menu__main.xml
<item
android:id="@+id/mySwitch"
android:title="switch"
android:orderInCategory="100"
android:checkable="true"
android:gravity="center_vertical"
android:actionLayout="@layout/customtoggle"
app:showAsAction="always"/>
的onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.toggle);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// find which radio button is selected
if (checkedId == R.id.rbtn1) {
System.out.println("Radio btn 1 pressed");
} else if (checkedId == R.id.rbtn2) {
System.out.println("Radio btn2 pressed");
}
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
System.out.println("ONCREATE");
}