在Actionbarsherlock中更新Actionbar菜单

时间:2013-01-08 12:09:45

标签: android actionbarsherlock menuitem

几个星期以来,它一直让我悲伤。我一直在浪费时间4-5个小时,并在剩下的时间内完成其他工作。但现在又回到了困扰我的梦想。因为我现在唯一要做的就是这个。有人可以告诉我如何更新操作栏菜单项吗?好像我们想要更新适配器中的数据(在ListView或spinner中),它可以由adapter.notifyDataSetChanged()完成。

但是actionbar需要做些什么呢?我的要求是......

我在所有活动上都有我的操作栏。假设用户点击login(action item on actionbar)活动4th,他将被重定向到login from第四个活动。提交详细信息后,我正在完成登录活动并将用户重定向到5th activityIn the 5th activity I am displaying username(as an action item) instead of login option在共享偏好和操作的帮助下。

但实际问题在这里--->当我返回第4个活动时,会显示login(操作项),而不是用户名。因为我没有对操作栏进行任何更新以更新上一个活动中的更改。这适用于backstack中的所有活动。在我看来,唯一的事情是在onResume()方法中做一些事情,因为当活动从后台开始时,将调用此回调方法。但是该方法应该做些什么呢?希望我的问题是可以理解的。如果有人想要任何其他细节,请告诉我。如果有人帮我解决这个问题,我将非常感激。

注意:我不想在onResume()中刷新我的活动,因为它是一个黑客攻击,而且更多会导致活动中的数据丢失。

2 个答案:

答案 0 :(得分:4)

试试这个:

在所有片段Activity中,在onResume()中写这个。

@Override
protected void onResume() {

    super.onResume();

    this.invalidateOptionsMenu();

}

然后在

onCreateOptionsMenu(Menu menu)

检查用户是否已登录。如果是,则使用您使用的相同技术显示用户名,否则显示login menuItem。

希望这能解决你的大问题。

答案 1 :(得分:2)

试试这个:

@Override
protected void onResume() {
    super.onResume();
    supportInvalidateOptionsMenu();
}