getActionBar возвращает ноль

призваниеgetActionBar возвращаетсяnull, Об этом часто сообщалось, поэтому я обязательно включил решения, которые использовали другие:minSdkVersion=11У меня есть заголовок, и я звонюgetActionBar послеsetContentView, Кроме того, моя деятельность не является детской деятельностью.

<code>setContentView(R.layout.main);

// experiment with the ActionBar 
ActionBar actionBar = getActionBar();
actionBar.hide();
</code>

Устройство Samsung Galaxy Tab 10.1 под управлением Android 3.2

Заранее спасибо за любые идеи или предложения!

 Harvey05 нояб. 2014 г., 22:02

Ответы на вопрос(13)

Кажется, есть несколько условий, которые должны быть выполнены, чтобы это работало. То, что меня долго озадачило, было так:

Убедитесь, что ваша активность расширяет активность (НЕ ActionBarActivity).

public class MagicActivity extends Activity

Убедитесь, что в манифесте вашего приложения есть что-то вроде

<application
    ...
    android:theme="@android:style/Theme.Holo" >

и убедитесь, что ваш макет активности имеет

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ....
    android:theme="@android:style/Theme.WithActionBar" >

-Отметка

Изменить порядок системного запроса:

@Override
protected void onCreate(Bundle savedInstanceState) {

    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);

    super.onCreate(savedInstanceState);    
    setContentView(R.layout.main);

    // experiment with the ActionBar 
    ActionBar actionBar = getActionBar();
    actionBar.hide();
}

Я пытался получить ActionBar из фрагмента внутри ActionBarActivity, используя библиотеку поддержки. Я должен был сделать это:

ActionBarActivity actionBarActivity = (ActionBarActivity)getActivity();
ActionBar actionBar = actionBarActivity.getSupportActionBar();

Мой следующий квест - выяснить, как сделать это универсальным. Например, этот код кажется грязным, потому что он требует, чтобы мой фрагмент знал и то, что он используется ActionBarActivity, и использование библиотеки поддержки. Я думаю, что это должен быть метод, который проверяетgetActivity().getActionBar() сначала следует приведенный выше код, перехватывающий исключение ClassCastException, если родительское действие не является действием ActionBarActivity.

 29 янв. 2015 г., 12:02
Только этот ответ работает для меня. Даже если я расширяю ActionBarActivity, getActionBar () возвращает ноль :(

может быть, стиль вашей деятельности основан на NoActionBar

Панель действий требует наличия темы или действия с названием приложения. Убедитесь, что вы не назвали свое приложение или действие темой. ПРИМЕЧАНИЕ.

<application
    android:name="com.xxx.yyy.Application"
    android:debuggable="false"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/Theme.NoTitle"> // remove this line if you have this in your code


<activity
        android:name="com.xxx.yyy.Activity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:theme="@style/Theme.NoTitle"  // remove this line if you have this in your code
        android:windowSoftInputMode="adjustResize|stateHidden" > 

Реальный ответ должен быть комбинацией @zapl и @Himanshu Virmani

Для Android Манифест:

<application
    android:name="com.xxx.yyy.Application"
    android:debuggable="false"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/Theme.NoTitle"> // remove this line if you have this in your code


<activity
        android:name="com.xxx.yyy.Activity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:theme="@style/Theme.NoTitle"  // remove this line if you have this in your code
        android:windowSoftInputMode="adjustResize|stateHidden" > 

Для деятельности:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // The Action Bar is a window feature. The feature must be requested
    // before setting a content view. Normally this is set automatically
    // by your Activity's theme in your manifest. The provided system
    // theme Theme.WithActionBar enables this for you. Use it as you would
    // use Theme.NoTitleBar. You can add an Action Bar to your own themes
    // by adding the element <item name="android:windowActionBar">true</item>
    // to your style definition.
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    setContentView(R.layout.activity_main);
    // Hide the status bar for Android 4.1 and higher
    View decorView = getWindow().getDecorView();
    // Hide the status bar.
    int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
    // Remember that you should never show the action bar if the
    // status bar is hidden, so hide that too if necessary.
    ActionBar actionBar = getActionBar();
    actionBar.hide();
}
 19 июн. 2014 г., 21:32
Для меня ответ состоял в том, чтобы переместить вызов requestFeature выше setContentView, спасибо!
Решение Вопроса

Кажется, вам нужно запросить наличие панели действий (! = Заголовок заголовка) либо через тему, либо с помощью приведенного ниже кода.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // The Action Bar is a window feature. The feature must be requested
    // before setting a content view. Normally this is set automatically
    // by your Activity's theme in your manifest. The provided system
    // theme Theme.WithActionBar enables this for you. Use it as you would
    // use Theme.NoTitleBar. You can add an Action Bar to your own themes
    // by adding the element <item name="android:windowActionBar">true</item>
    // to your style definition.
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);

    setContentView(R.layout.main);

    // experiment with the ActionBar 
    ActionBar actionBar = getActionBar();
    actionBar.hide();
}

Код из [Вот]

 user31611705 апр. 2012 г., 17:53
Благодарю. Я думал, что у меня уже есть Панель действий, но на самом деле у меня была «Системная панель».

В случае, когда вы разрабатываете приложение с таргетингом на sdk & gt; = 14, и вы расширяете AppCompat для поддержки темы «Материал» и в предыдущих версиях. Если вы хотите скрыть элементы из панели действий, например кнопку «Назад», вам нужно сделать следующее: В вашей деятельности (не в классе фрагментов) Если вы будете использовать getActionBar (), он вернет значение null. как и в теме Appsupport, getSupportAcionBar () вернет панель действий.

Вот ссылка, если вы хотите следовать изDevByte

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_detail);
    getSupportActionBar().setDisplayHomeAsUpEnabled(false);




}

Если вы создадите проект приложения для API14 или выше, там будет папка values-14. Убедитесь, что эта папка существует, и в ней есть файл styles.xml с:

<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <!-- API 14 theme customizations can go here. -->
</style>

Я получил эту ошибку, потому что создал новый проект и не хотел, чтобы в моем проекте были какие-либо дополнительные папки значений, поэтому я просто сохранил папку значений и удалил папки values-v11 и values-v14. Но, очевидно, тема по умолчанию для API14 и выше требует ActionBar в его родительском XML-теге, если вы хотите использовать ActionBar. Поэтому я предположил, что могу сделать это неправильно! Надеюсь, это кому-нибудь поможет. Вы, скорее всего, решите ваши вопросы с помощью приведенных выше ответов.

Это исправило мою проблему:

android.support.v7.app.ActionBar ab = getSupportActionBar();
 19 июн. 2014 г., 21:32
Для меня ответ состоял в том, чтобы переместить вызов requestFeature выше setContentView, спасибо!

просто измени две вещи 1) редактирование файла манифеста Android: тема = & Quot; @android: стиль / Theme.Holo & Quot; & GT;

2) Фрагмент файла добавления Android: тема = & Quot; @android: стиль / Theme.WithActionBar & Quot;

Кажется, я решил все свои ошибки, переключившисьgetActionBar() сgetSupportActionBar(). I had tried different themes, adding getWindow().requestFeature(Window.FEATURE_ACTION_BAR);, made sure the setContentView(view) was first and all the other things seen before.

 29 июн. 2015 г., 15:55
Работает отлично! Спасибо

Убедитесь, что вы продлили ACTIONBARACTIVITY, а не ACTIVITY Это должно решить вашу проблему

Ваш ответ на вопрос