【问题标题】:Option menu option not directing to another activity选项菜单选项未重定向到另一个活动
【发布时间】:2019-06-10 21:13:20
【问题描述】:

单击菜单栏中的选项菜单项“设置”时,我想导航到另一个Activity。没有发生任何实际情况。我已经检查了此处发布的类似问题,但我可以理解为什么这不适用于选项菜单。 看下面的代码:

Can't go to a new activity from selected option from option menu

<item
    android:id="@+id/mySettings"

    android:title="@string/action_settings" />

<item
    android:id="@+id/logout"

    android:title="log out" />

代码:

public class Dashboard extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dashboard);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.app_bar_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }


    public void openConfigure(){
        Intent intent = new Intent(this,Configure.class);
        this.startActivity(intent);
    }
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.mySettings:
                openConfigure();

                break;

            default:
                return super.onOptionsItemSelected(item);

        }


        return true;
    }

【问题讨论】:

    标签: android optionmenu


    【解决方案1】:

    使用onOptionsItemSelected 而不是onContextItemSelected,因为您使用的是OptionMenu 而不是ContextMenu

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.mySettings:
                openConfigure();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
    

    【讨论】:

    • 我已将其更改为 onOptionsItemSelected ,但仍未打开其他活动。
    • 点击菜单项会发生什么?还要检查 Configure Activity 的清单条目,它不存在吗?
    • 当我点击没有错误显示,并且没有打开配置活动。清单条目也在那里:
    • 您的解决方案有效。但是,它会打开一个不同的 Activity。
    • 它将打开您在Intent 中声明的活动,在这种情况下为Configure ..您可能搞砸了代码或布局。
    【解决方案2】:

    要选择选项菜单项,您必须覆盖 onOptionItemSelected() : 试试下面的代码

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.mySettings:
                openConfigure();
                break;
        }
        return true;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2012-01-24
      相关资源
      最近更新 更多