2013-07-27 12 views
22

Mi è stato consigliato di prolungare la mia classe di attività da ActionBarActivitygetSupportActionBar() Il metodo getSupportActionBar() non è definito per il tipo TaskActivity. Perché?

Ecco il codice precedente:

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

ho scritto nuova applicazione e seguito il consiglio.

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

Se uso ACtionBarActivity invece di attività, ottengo il seguente errore al telefono, quando provo a farlo funzionare:

Il metodo getSupportActionBar() non è definito per il tipo di TaskActivity

risposta

1

Ecco la risposta alla mia domanda. L'ho chiesto di nuovo con alcune osservazioni. How to add support libraries?

+6

Ciò rende questa domanda un duplicato? –

71

La classe deve estendersi da ActionBarActivity anziché un semplice Activity per utilizzare i metodi getSupport*().

Aggiornamento [2015/04/23]: Con the release of Android Support Library 22.1, si dovrebbe ora estendere AppCompatActivity. Inoltre, non è più necessario di estendere ActionBarActivity o AppCompatActivity, come è ora possibile integrare un'istanza AppCompatDelegate in qualsiasi attività.

+2

mi ha aiutato oggi :) –

+0

ottima risposta, grazie –

+0

@MH sì ma perché? –

5

Credo che questa sia un'altra soluzione che avresti potuto utilizzare. Funziona nella mia 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) 

Quindi è possibile eliminare quell'importazione per l'uso di ActionBar a una riga.

+0

Grazie mille, ma ho già risolto il mio problema. Ho letto sull'aggiunta di librerie di supporto. –

2

se sei già estendendo da ActionBarActivity e si sta tentando di ottenere la barra delle azioni da un frammento:

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

Se si estende da un AppCompatActivity e stanno cercando di ottenere l'ActionBar dal frammento, è può fare questo:

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

Devi cambiare la estende attività per estende AppCompactActivity quindi provare impostato e getSupportActionBar()

Problemi correlati