Android:一个活动中的多个选项菜单

11

我有一个包含ViewFlipperActivity,并希望为该ViewFlipper中的每个视图显示不同的选项菜单。也就是说,当按下菜单按钮时显示的菜单类型将取决于当前视图的类型。

然而,onCreateOptionsMenu()只被调用一次(第一次显示选项菜单时),因此在那里创建不同的菜单无法实现。

我该怎么解决这个问题?

1个回答

28

首先了解一下onPrepareOptionsMenu(Menu menu)

当用户在你的activity中按下Android设备上的Menu键时,就会调用onPrepareOptionsMenu方法。第一次显示菜单时(即仅一次),将调用onCreateOptionsMenu方法。

基本上,onPrepareOptionsMenu方法是你应该进行任何更改的地方,比如启用/禁用某些菜单项,或者根据情况更改菜单项文本。

所以要这样做(不使用onCreateOptionsMenu(Menu menu)

//Dynamically create context Menu
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        menu.clear(); //Clear view of previous menu
        MenuInflater inflater = getMenuInflater();
        if(condition_true)
            inflater.inflate(R.menu.menu_one, menu);
        else
            inflater.inflate(R.menu.menu_two, menu);
        return super.onPrepareOptionsMenu(menu);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接