我的应用程序包含三个选项卡,并使用分页器在它们之间进行切换。每个选项卡都有自己的片段。我使用OptionsMenu方法在主Activity中的操作栏中添加了设置和帮助操作按钮。现在,我想为第一个选项卡和第一个片段添加一个新的操作按钮,但是我不希望它出现在其他选项卡中显示它们的片段中。
我已经为主菜单创建了这个布局,它是在主活动中创建的。
这个菜单显示正常,功能也和预期一样。
我还有另一个菜单,名为menu_prelaunch_fragment,是用于第一个碎片的。
我将使用以下代码在第一个片段中将其添加到操作栏中:
问题在于,当我切换到其他页面/选项卡的其他片段时,这个添加的按钮并不会消失。其他片段中没有任何选项菜单代码。
然后,我向其他片段添加了以下代码以删除一个按钮。
我已经为主菜单创建了这个布局,它是在主活动中创建的。
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
<item android:id="@+id/help"
android:title="@string/help"
android:orderInCategory="100" app:showAsAction="never" />
</menu>
这个菜单显示正常,功能也和预期一样。
我还有另一个菜单,名为menu_prelaunch_fragment,是用于第一个碎片的。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/clear_form"
android:title="Clear"
android:icon="@drawable/ic_action_action_delete"
app:showAsAction="always" />
</menu>
我将使用以下代码在第一个片段中将其添加到操作栏中:
我使用以下代码将其添加到操作栏中 -
@Override
public void onCreate(Bundle savedInstance) {
Log.d(TAG, "onCreate");
super.onCreate(savedInstance);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflator) {
Log.d(TAG, "onCreateOptionsMenu");
inflator.inflate(R.menu.menu_prelaunch_fragment, menu);
super.onCreateOptionsMenu(menu, inflator);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "onOptionsItemSelected");
if (item.getItemId() == R.id.clear_form)
clearFragmentData();
return super.onOptionsItemSelected(item);
}
问题在于,当我切换到其他页面/选项卡的其他片段时,这个添加的按钮并不会消失。其他片段中没有任何选项菜单代码。
然后,我向其他片段添加了以下代码以删除一个按钮。
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onPrepareOptionsMenu (Menu menu) {
menu.findItem(R.id.clear_form).setVisible(false);
super.onPrepareOptionsMenu(menu);
}
但是现在,无论选择哪个选项卡,清除按钮都不会出现在操作栏中。
如何为我的三选项卡应用程序中的一个选项卡(即片段)添加操作按钮到操作栏?只有当选择(显示)该选项卡(片段)时才应该出现。
谢谢!