Es wurde mir empfohlen, meine Aktivitätsklasse von ActionBarActivity zu erweitern
Hier ist der vorherige Code:
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);
}
Ich schrieb eine neue Bewerbung und folgte dem Rat.
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;
}
}
Wenn ich ACtionBarActivity anstelle von Activity verwende, wird auf dem Telefon die folgende Fehlermeldung angezeigt, wenn ich versuche, es auszuführen:
Die Methode getSupportActionBar () ist für den Typ TaskActivity undefiniert
Hier ist die Antwort auf meine Frage. Ich habe das noch einmal mit einigen Bemerkungen gefragt. Wie füge ich Unterstützungsbibliotheken hinzu?
Ihre Klasse muss sich von ActionBarActivity
anstatt von einem einfachen Activity
erstrecken, um die getSupport*()
-Methoden verwenden zu können.
Update [2015/04/23]: Mit der Veröffentlichung von Android= Support Library 22.1 sollten Sie nun AppCompatActivity.
Außerdem müssen Sie nicht länger haben, um ActionBarActivity
oder AppCompatActivity
zu erweitern, da Sie jetzt ein AppCompatDelegate
Instanz in einer beliebigen Aktivität.
Hier ist eine andere Lösung, die Sie hätten verwenden können. Es funktioniert in meiner App.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Android.support.v7.app.ActionBar actionBar =getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_main)
Dann können Sie diesen Import für die einzeilige ActionBar-Verwendung entfernen.
Wenn Sie bereits von ActionBarActivity erweitern und versuchen, die Aktionsleiste aus einem Fragment abzurufen:
ActionBar mActionBar = (ActionBarActivity)getActivity()).getSupportActionBar();
Wenn Sie von einer AppCompatActivity aus erweitern und versuchen, die ActionBar aus dem Fragment abzurufen, können Sie Folgendes tun:
ActionBar mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
Sie müssen die extended-Aktivität ändern, um AppCompactActivity zu erweitern, und dann set und getSupportActionBar () versuchen.
Können Sie die Aktionsleiste festlegen, bevor Sie die Inhaltsansicht festlegen? Diese Reihenfolge wäre besser:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar =getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}