ActionBar不显示每个活动(仅显示一个活动)

时间:2015-01-26 13:10:16

标签: java android android-studio

我尝试为每个活动设置我的操作栏(在.java文件中)并且除了只有一个(FunnyActivity.java)之外,每个活动都不会加载它吗?

FunnyActivity.java onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.funny_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

GunsActivity.java onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.guns_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

感谢您的回复。

<activity
        android:name="com.tropicalstudios.soundboard.FunnyActivity"
        android:label="Funny Sounds"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
        android:launchMode="singleTask" >
    </activity>

    <activity
        android:name="com.tropicalstudios.soundboard.GunsActivity"
        android:label="Gun Sounds"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
        android:launchMode="singleTask" >
    </activity>

    <activity
        android:name="com.tropicalstudios.soundboard.Miscellaneous"
        android:label="Miscellaneous Sounds"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
        android:launchMode="singleTask" >
    </activity>

3 个答案:

答案 0 :(得分:1)

如果您在某些活动中需要隐藏actionBar,请尝试使用支持库调用getActionBar().hide()getSupportActionBar().hide()

答案 1 :(得分:1)

我们可以通过调用ActionBar来隐藏/显示show();,并hide();隐藏它。如果您使用的是API级别7,8或10,请使用getSupportActionBar(),并且不要忘记导入appcompat-v7库。然后,使用ActionBarActivity而不是Activity扩展您的课程。对于API级别11及更高级别,只需致电getActionBar()即可。以下是您的示例:

// extend this class with "Activity" for API 11+
public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // For API 10 and lower only
    getSupportActionBar().show(); // call hide() if you want to hide it.

    // For API 11 and higher only
    getActionBar().show(); // call hide() if you want to hide it.

请详细了解ActionBar

答案 2 :(得分:0)

AndroidManifest文件可以定义您为给定Activity设置的样式。如果您对此进行了修改,或者只为一个活动设置了主题,则它不会影响其他活动。例如,如果您在清单XML文件中有这样的Activity设置:

<activity android:name=".AlertFailedCommunications"
          android:label="@string/alert_account_label"
          android:screenOrientation="portrait"
          android:theme="@android:style/Theme.Dialog"/>

然后它需要一个对话框样式屏幕,并且该屏幕内没有可用的操作栏(不是最好的示例主题,但你明白了)。然而,这样的主题:

<activity android:name="MainActivity"
          android:label="@string/app_name"
          android:screenOrientation="portrait"
          android:theme="@android:style/Theme.DeviceDefault.Light.DarkActionBar"/>

会提供一个黑暗风格的动作栏。如果你没有提供支持一个主题的主题,那么你就不会看到一个主题。这可能是你遇到的问题。