1

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

但是,需要为它做的事情是什么actionbar?我的要求是这样...

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

但实际问题在这里--->当我回到第四个活动时,显示的login是 (action item) 而不是username。因为我没有对操作栏进行任何刷新以更新先前活动中的更改。这适用于 backstack 中的所有活动。在我看来,唯一的事情就是在onResume()方法中做一些事情,因为当活动从后台来到前面时,这个回调方法将被调用。但是在那个方法中应该怎么做呢?希望我的问题可以理解。如果有人想要任何其他细节,请告诉我。如果有人帮助我解决这个问题,我将非常感激。

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

4

2 回答 2

4

试试这个:

在所有片段 Activity 中将其写入 onResume() 中。

@Override
protected void onResume() {

    super.onResume();

    this.invalidateOptionsMenu();

}

然后在

onCreateOptionsMenu(Menu menu)

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

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

于 2013-01-08T12:32:48.597 回答
2

试试这个:

@Override
protected void onResume() {
    super.onResume();
    supportInvalidateOptionsMenu();
}
于 2014-01-12T05:38:16.413 回答