【问题标题】:Android Action buttons remain from previous viewAndroid 操作按钮保留在以前的视图中
【发布时间】:2023-03-30 21:59:01
【问题描述】:

我在 Android 中使用片段创建了一个主细节视图。 (目前我考虑的是手机布局,而不是平板电脑布局)。

在我的主视图中,我有一个项目列表,我在操作栏中显示了一个“添加”按钮。

在我的详细视图中,我在操作栏中显示所选项目的详细信息、“删除”按钮和“编辑”按钮。

现在我已经这样做了,“添加”按钮仍然出现在我的详细视图的操作栏中。

大师班:

public class AvailableZonesFragment extends Fragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_available_zones, menu);
    }
}

主菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/add"
        android:icon="@android:drawable/ic_menu_add"
        android:orderInCategory="1"
        app:showAsAction="always"
        android:title="Add">
    </item>
</menu>

详细分类:

public class ZoneDetailsFragment extends Fragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_zone_details, menu);
    }
}

详细菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/edit"
        android:icon="@android:drawable/ic_menu_edit"
        android:orderInCategory="1"
        app:showAsAction="always"
        android:title="Edit">
    </item>
    <item
        android:id="@+id/remove"
        android:icon="@android:drawable/ic_menu_delete"
        android:orderInCategory="2"
        app:showAsAction="ifRoom"
        android:title="Delete">
    </item>
</menu>

【问题讨论】:

  • 请贴一些代码,否则很难发现问题

标签: android android-actionbar master-detail


【解决方案1】:

你有没有尝试打电话

menu.clear();

作为您的详细信息片段中 onCreateOptionsMenu 的第一行,用于从前一个片段中删除菜单项。

【讨论】:

  • 这个。一位同事告诉我,在为 ned menu.xml 充气时,optionMenuIcons 会“堆叠”在 actionBar 上
  • 它们是,当使用片段时(它们具有相同的活动),这就是为什么您必须调用 menu.clear() 来删除以前的项目。
  • 这正是我想要的,谢谢。
猜你喜欢
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多