onCreateOptionsMenu vs onPrepareOptionsMenu

时间:2015-05-21 19:13:28

标签: java android android-optionsmenu

我想要的是在自定义菜单项中获取对Togglebutton的引用。

菜单为R.menu.main,自定义动作布局为R.id.action_rotation_switch,实际按钮为R.id.rotationLockSwitch。这几乎是正确的。但是当我启动活动时,menu.findItem(R.id.action_rotation_switch);返回一个空指针。 怎么可能? 使用这两个回调的正确方法是什么?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!mNavigationDrawerFragment.isDrawerOpen())
    {            
        getMenuInflater().inflate(R.menu.main, menu);
        restoreActionBar();
        return true;
    }
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    MenuItem item = menu.findItem(R.id.action_rotation_switch);
    View v = item.getActionView();
    panRotSwitch = (ToggleButton)v.findViewById(R.id.rotationLockSwitch);


    panRotSwitch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sketchBoardFragment.lockRotation(panRotSwitch.isChecked());
        }
    });

    return super.onPrepareOptionsMenu(menu);

}

0 个答案:

没有答案