2016-05-16 70 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