2013-07-27 2 views
22

я рекомендовал расширить свой класс активности от ActionBarActivitygetSupportActionBar() Метод getSupportActionBar() не определен для типа TaskActivity. Зачем?

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

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 вместо деятельности, я получаю следующее сообщение об ошибке по телефону, когда я пытаюсь запустить его:

Метод getSupportActionBar() не определено для типа TaskActivity

ответ

1

Вот ответ на мой вопрос. Я еще раз спросил это с некоторыми замечаниями. How to add support libraries?

+6

Это делает этот вопрос дубликатом? –

71

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

Update [2015/04/23]: С the release of Android Support Library 22.1, вы должны теперь расширить AppCompatActivity. Кроме того, вы больше не имеют продлить ActionBarActivity или AppCompatActivity, так как теперь вы можете включать в AppCompatDelegate экземпляр в какой-либо деятельности.

+2

помог мне сегодня :) –

+0

отличный ответ, спасибо –

+0

@MH да, но почему? –

5

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

 @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.

+0

Большое спасибо, но я уже решил свою проблему. Я читал о добавлении библиотек поддержки. –

2

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

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

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

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

Вы должны изменить активность распространяется на расширяет AppCompactActivity затем попытайтесь установить и getSupportActionBar()

 Смежные вопросы

  • Нет связанных вопросов^_^