Подтвердить что ты не робот

GetSupportActionBar() Метод getSupportActionBar() - undefined для типа TaskActivity. Зачем?

Мне было рекомендовано расширить класс Activity из ActionBarActivity

Вот предыдущий код:

import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;  

public class MainActivity extends Activity  {

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

Я написал новое приложение и последовал советам.

import android.os.Bundle;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBarActivity;            

    public class MainActivity extends ActionBarActivity {

          @Override
          public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ActionBar actionBar =getSupportActionBar();
            actionBar.setDisplayHomeAsUpEnabled(true);            
            setContentView(R.layout.activity_main);
          }

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

Если я использую ACtionBarActivity вместо Activity, я получаю следующую ошибку на телефоне, когда я пытаюсь запустить ее:

Метод getSupportActionBar() - undefined для типа TaskActivity

4b9b3361

Ответ 2

Для использования методов getSupport*() ваш класс должен простираться от ActionBarActivity, а не на простой Activity.

Обновить [2015/04/23]: при помощи версии Android Support Library 22.1 вы должны расширить AppCompatActivity.., вам больше не нужно расширять ActionBarActivity или AppCompatActivity, так как теперь вы можете использовать экземпляр AppCompatDelegate в любой деятельности.

Ответ 3

Я считаю, что это еще одно решение, которое вы могли бы использовать. Он работает в моем приложении.

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Android.support.v7.app.ActionBar actionBar =getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);            
        setContentView(R.layout.activity_main)

Затем вы можете избавиться от этого импорта для использования одной строки ActionBar.

Ответ 4

Если вы уже расширяетесь из ActionBarActivity и пытаетесь получить панель действий из фрагмента:

ActionBar mActionBar = (ActionBarActivity)getActivity()).getSupportActionBar();

Ответ 5

Если вы распространяетесь из AppCompatActivity и пытаетесь получить ActionBar из фрагмента, вы можете сделать это:

ActionBar mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();