默认操作栏仅在主活动上显示操作菜单项

时间:2016-05-16 22:37:09

标签: android android-actionbar

我的应用中有两项活动。我想在默认操作栏上设置两个菜单项。他们在主要活动上正确设置,但在其他活动中,操作栏不会显示它们。我仍然看到带有标签的Action Bar,但没有动作菜单。

这是清单文件:     

    <activity
        android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    <activity
        android:name=".SecondActivity">
    </activity>

</application>

菜单项:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/Settings"
    android:icon="@drawable/ic_settings_white_48dp"
    android:onClick="onClickDoAction"
    app:showAsAction="ifRoom|withText"
    android:title="Settings">
</item>

<item
    android:id="@+id/Share"
    android:icon="@drawable/ic_share_white_48dp"
    android:onClick="onClickDoAction"
    app:showAsAction="ifRoom|withText"
    android:title="Share">
</item>

  式:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/background</item>
</style>

MainActivity:

public class MainActivity extends AppCompatActivity {
    ...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}

}

我提到在SecondActivity中我没有在这方面做任何事情,我是否应该在每个活动中调用onCreateOptionsMenu()等等?...

1 个答案:

答案 0 :(得分:1)

getMenuInflater().inflate(R.menu.menu, menu);

此行将MenuItem添加到当前Activity。您必须为每个Activity执行此操作。

如果每个Activity中都有相同的菜单,则可以在超类中调用它,并使所有活动对其进行扩展。这有助于减少重复代码。