如何动态/即时更改菜单项?

时间:2013-08-10 11:30:54

标签: java android android-menu

我在操作栏上有3个活动的刷新按钮。这3项活动从BaseActivity延伸。这样我就可以一次编写onCreateOptionsMenu(Menu menu) { //... }方法。

当用户点击它时,我想将图标更改为refreshing图标。

我可以处理点击和刷新操作,也可以更改图标,但在操作完成后无法处理更改图标。

知道某个方法(位于BaseActivity以外的活动中)何时完成其工作的最佳方式是什么?我是否必须使用interface来处理BaseActivity的{​​{1}}方法?

1 个答案:

答案 0 :(得分:0)

如果您想更改图标,请拨打invalidateOptionsMenu()(这将触发onCreateOptionsMenu(Menu menu)被调用)并添加一些逻辑以更改onCreateOptionsMenu(Menu menu)内的图标,例如

@Override
  public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.id.menu, menu);
    if(isRefreshing()){
      menu.findItem(R.id.refresh).setIcon(R.drawable.refreshing);
    }else{
      menu.findItem(R.id.refresh).setIcon(R.drawable.refresh);
    }
  }

以上代码会使菜单资源R.id.menu膨胀,并根据isRefreshing()的结果更改图标。