我正在开发一个应用程序,我正在使用Swipable Tabs - 使用FragmentActivity和每个Tab的相应Fragment实现。
现在我在每个片段(Tab)中都有复选框。选中复选框后,我需要在应用程序的操作栏中启用几个菜单项(如发送/共享/删除),并在未选中复选框时禁用这些菜单。
我们怎样才能做到这一点?任何指针都将受到赞赏。
- Ramky
答案 0 :(得分:3)
系统调用onCreateOptionsMenu()后,它会保留您填充的菜单实例,并且不会再次调用onCreateOptionsMenu(),除非由于某种原因菜单失效。但是,您应该仅使用onCreateOptionsMenu()来创建初始菜单状态,而不是在活动生命周期中进行更改。
如果要根据活动生命周期中发生的事件修改选项菜单,可以在onPrepareOptionsMenu()方法中执行此操作。此方法会将Menu对象传递给当前存在,以便您可以对其进行修改,例如添加,删除或禁用项目。 (片段还提供onPrepareOptionsMenu()回调。)
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
if (condition_true)
menu.getItem(item_index).setEnabled(false);
return true;
}
答案 1 :(得分:1)
public Menu toggleMenu;
boolean isflag = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.your_menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
toggleMenu = menu;
toggleItem();
return super.onPrepareOptionsMenu(menu);
}
public void toggleItem(){
MenuItem item1= toggleMenu.findItem(R.id.item1);
MenuItem item2= toggleMenu.findItem(R.id.item2);
if(isflag)
{
item1.setVisible(false);
item2.setVisible(true);
}
else
{
item1.setVisible(true);
item2.setVisible(false);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.item1:
isflag = true;
toggleItem();
break;
case R.id.item2:
isflag = false;
toggleItem();
break;
}
return super.onOptionsItemSelected(item);
}