Ответ 1
Вот ответ на мой вопрос. Я снова спросил это с некоторыми замечаниями. Как добавить библиотеки поддержки?
Мне было рекомендовано расширить класс 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
Вот ответ на мой вопрос. Я снова спросил это с некоторыми замечаниями. Как добавить библиотеки поддержки?
Для использования методов getSupport*()
ваш класс должен простираться от ActionBarActivity
, а не на простой Activity
.
Обновить [2015/04/23]: при помощи версии Android Support Library 22.1 вы должны расширить AppCompatActivity.
., вам больше не нужно расширять ActionBarActivity
или AppCompatActivity
, так как теперь вы можете использовать экземпляр AppCompatDelegate
в любой деятельности.
Я считаю, что это еще одно решение, которое вы могли бы использовать. Он работает в моем приложении.
@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.
Если вы уже расширяетесь из ActionBarActivity и пытаетесь получить панель действий из фрагмента:
ActionBar mActionBar = (ActionBarActivity)getActivity()).getSupportActionBar();
Если вы распространяетесь из AppCompatActivity и пытаетесь получить ActionBar из фрагмента, вы можете сделать это:
ActionBar mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();