On m'a recommandé d'étendre ma classe Activity à partir d'ActionBarActivity
Voici le code précédent:
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);
}
J'ai écrit une nouvelle demande et suivi les conseils.
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;
}
}
Si j'utilise ACtionBarActivity au lieu de Activity, j'obtiens l'erreur suivante sur le téléphone lorsque j'essaie de l'exécuter:
La méthode getSupportActionBar () n'est pas définie pour le type TaskActivity
Voici la réponse à ma question. Je l'ai demandé à nouveau avec quelques remarques. Comment ajouter des bibliothèques de support?
Votre classe doit s'étendre de ActionBarActivity
, plutôt qu'une simple Activity
pour utiliser les méthodes getSupport*()
.
Mise à jour [2015/04/23]: Avec la sortie de Android Support Library 22.1 =, vous devez maintenant étendre AppCompatActivity.
De plus, vous n'avez plus have pour étendre ActionBarActivity
ou AppCompatActivity
, car vous pouvez maintenant incorporer un AppCompatDelegate
instance dans n'importe quelle activité.
Voici une autre solution que vous auriez pu utiliser. Cela fonctionne dans mon application.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Android.support.v7.app.ActionBar actionBar =getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_main)
Ensuite, vous pouvez vous débarrasser de cette importation pour l'utilisation d'une seule ligne ActionBar.
Si vous étendez déjà depuis ActionBarActivity et que vous essayez d'obtenir la barre d'actions à partir d'un fragment:
ActionBar mActionBar = (ActionBarActivity)getActivity()).getSupportActionBar();
Si vous étendez à partir d'une AppCompatActivity et essayez d'obtenir l'ActionBar à partir du fragment, vous pouvez le faire:
ActionBar mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
Vous devez modifier l'activité étend pour étendre AppCompactActivity, puis essayez de définir et getSupportActionBar ()
Pouvez-vous définir l'ActionBar avant de définir la vue Contient? Cette commande serait mieux:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar =getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}