0

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

  • 我有一个 MenuItem,在我的 android 应用程序中有一个 Icon。
  • MenuItem 的容器是一个操作栏(appcompat 版本)
  • 我有对 ActionBar 的参考
  • 用户可以将图标更改为 MenuItem。
  • 我使用布尔值来跟踪图标的当前状态(它只能是 2 个图标中的 1 个)
  • 当视图从纵向更改为横向(反之亦然)时,它们的活动被破坏,并带走所有变量等。

3 失败的解决方案:

  1. 通常,我会通过使用 Bundle 来解决这个问题。但是,Bundle 只接受原语和 parcelables。如何打包 MenuItem(如果有的话)?

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

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

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

4

1 回答 1

1

1、Activity onSaveInstanceState 时保存一个布尔值的状态

2、Activity重新onCreate时恢复布尔值。

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;
    }
于 2013-07-30T01:23:52.697 回答