webentwicklung-frage-antwort-db.com.de

getSupportActionBar () Die Methode getSupportActionBar () ist für den Typ TaskActivity undefiniert. Warum?

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.

75
MH.

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.

5
dongemus

Wenn Sie bereits von ActionBarActivity erweitern und versuchen, die Aktionsleiste aus einem Fragment abzurufen:

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

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();
2
Horatio

Sie müssen die extended-Aktivität ändern, um AppCompactActivity zu erweitern, und dann set und getSupportActionBar () versuchen.

1
Tony Jacob

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);            
  }