如何从被破坏的活动中传递一个android对象?

时间:2013-07-30 01:17:11

标签: android object action bundle menuitem

对于这样一个简单的问题,这似乎是一个疯狂的挑战!

  • 我有一个在我的Android应用程序中有一个Icon的MenuItem。
  • MenuItem的容器是Action Bar(appcompat版本)
  • 我有对ActionBar
  • 的引用
  • 用户可以将图标更改为MenuItem。
  • 我使用布尔来跟踪图标的当前状态(它只能是2个图标中的1个)
  • 更改视图时 肖像到风景(反之亦然),它们的活动被破坏了, 用它来获取所有变量等。

3失败的解决方案:

  1. 通常情况下,我会使用Bundle来解决这个问题。然而, Bundle只接受原语和parcelables。我怎么能包裹一个 MenuItem(如果有的话)?

  2. 另一种方法是在新活动中获取MenuItem     并使用上面提到的布尔值来决定图标值。     但是,如果没有它,似乎无法获取MenuItem     首先被按下(即this.getMenu())。

  3. 另一种选择是模拟按MenuItem     取决于布尔值。但是,似乎没有办法     模拟按MenuItem(主要是因为没有办法     抓住一个MenuItem!)。

  4. 当方向发生变化时,如何在新活动的操作栏上更改MenuItem的徽标?

1 个答案:

答案 0 :(得分:1)

1,保存Activity onSaveInstanceState

时的布尔值状态

2,恢复活动重新创建时的布尔值。

3,在菜单创建时更改图标。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        MenuItem item = menu.getItem(0);
        if(mIsTrue){
            item.setIcon(R.drawable.true_icon);
        }else{
            item.setIcon(R.drawable.false_icon);
        }

        return true;
    }