我有一个包含ViewFlipper
的Activity
,并希望为该ViewFlipper
中的每个视图显示不同的选项菜单。也就是说,当按下菜单按钮时显示的菜单类型将取决于当前视图的类型。
然而,onCreateOptionsMenu()
只被调用一次(第一次显示选项菜单时),因此在那里创建不同的菜单无法实现。
我该怎么解决这个问题?
我有一个包含ViewFlipper
的Activity
,并希望为该ViewFlipper
中的每个视图显示不同的选项菜单。也就是说,当按下菜单按钮时显示的菜单类型将取决于当前视图的类型。
然而,onCreateOptionsMenu()
只被调用一次(第一次显示选项菜单时),因此在那里创建不同的菜单无法实现。
我该怎么解决这个问题?
首先了解一下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);
}