处理工具栏onOptionsItemSelected上的监听器 - android

时间:2016-04-22 23:27:18

标签: android listener toolbar

我的工具栏有一个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");

    }

0 个答案:

没有答案