2016-05-16 81 views
0

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

这里是清单文件:

<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
getMenuInflater().inflate(R.menu.menu, menu); 

这条线将MenuItem添加到当前的Activity。你必须每Activity这样做。


如果你在每个Activity相同的菜单,你可以在一个超类调用此做出的所有活动扩展它。这将有助于减少重复的代码。

+0

我搜索了很多,我发现无处不在,我应该在每一个活动中调用它,所以我想也许有一个设置,我不会在Manifest文件中做对,它会传播它到应用程序中的所有活动。看来我错了......非常感谢! – Rucsi