这几个星期以来一直让我感到悲伤。我一直在浪费我的时间,每天有 4-5 个小时,剩下的时间就把它留在这里完成其他工作。但现在它又回来困扰我的梦想。因为我现在唯一要做的就是这个。有人可以让我知道如何更新操作栏菜单项吗?就像我们要更新适配器中的数据(在 ListView 或微调器中)一样,可以通过 adapter.notifyDataSetChanged()
来完成。
但是需要为actionbar
做些什么呢?我的要求是这样的……
我在所有 Activity 上都有我的操作栏。假设如果用户在 4th
Activity 上单击 login(action item on actionbar)
,他将被重定向到 login from
第四个 Activity 。提交详细信息后,我将完成登录 Activity 并将用户重定向到 5th activity
。 在第 5 个 Activity 中,我在共享首选项和操作的帮助下显示用户名(作为操作项)而不是登录选项
。
但实际问题在这里 ---> 当我返回到第 4 个 Activity 时,显示的是 login
(操作项)而不是 username。因为我没有对操作栏进行任何刷新以更新先前 Activity 中的更改。这适用于 backstack 中的所有 Activity 。在我看来,唯一的事情就是在 onResume()
方法中做一些事情,因为当 Activity 从后台出现时,将调用此回调方法。但是在那个方法中应该做什么呢?希望我的问题是可以理解的。如果有人想要任何其他细节,请告诉我。如果有人帮助我解决这个问题,我将非常感激。
注意:我不想在 onResume()
中刷新我的 Activity,因为它是一个 hack,而且更多会导致 Activity 中的数据丢失。
最佳答案
试试这个:
在所有 fragment Activity 中将此写在 onResume() 中。
@Override
protected void onResume() {
super.onResume();
this.invalidateOptionsMenu();
}
然后在
onCreateOptionsMenu(Menu menu)
检查用户是否已登录。如果是,则使用与您使用的相同技术显示用户名,否则显示登录菜单项。
希望这能解决您的大问题。
关于android - 在 Actionbarsherlock 中更新 Actionbar 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14214643/