J'ai essayé d'ajouter un bouton de retour à la barre d'action.
Je veux que ma vue ressemble à ceci:
Je veux ajouter le bouton de retour à gauche de la barre d'action.
J'ai ajouté ce code
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
mais ça ne marche pas.
Comment puis-je réparer cela?
Après réglage actionBar.setHomeButtonEnabled(true);
Ajoutez le code suivant:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Android.R.id.home:
// app icon in action bar clicked; goto parent activity.
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Ajouter
actionBar.setHomeButtonEnabled(true);
puis ajoutez ce qui suit
@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId()) {
case Android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(menuItem);
}
}
Comme suggéré par naXa , j'ai ajouté une vérification sur la variable itemId
pour qu'elle fonctionne correctement s'il y avait plusieurs boutons dans la barre d'action.
celui-ci a fonctionné pour moi:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_your_activity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// ... other stuff
}
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
La méthode onSupportNavigateUp () est appelée lorsque vous utilisez le bouton Précédent de SupportActionBar.
Après mise
actionBar.setHomeButtonEnabled(true);
Vous devez configurer l'activité parente dans votre AndroidManifest.xml
<activity
Android:name="com.example.MainActivity"
Android:label="@string/app_name"
Android:theme="@style/Theme.AppCompat" />
<activity
Android:name="com.example.SecondActivity"
Android:theme="@style/Theme.AppCompat" >
<meta-data
Android:name="Android.support.PARENT_ACTIVITY"
Android:value="com.example.MainActivity" />
</activity>
Regardez ici pour plus d'informations http://developer.Android.com/training/implementing-navigation/ancestral.html
Il y a deux façons d'aborder cela.
Option 1: Mettre à jour le manifeste Android .__ Si les paramètres Activité sont toujours appelés à partir de la même activité, vous pouvez créer la relation dans le manifeste Android. Android affichera automatiquement le bouton 'Précédent' dans la barre d'actions
<activity
Android:name=".SettingsActivity"
Android:label="Setting Activity">
<meta-data
Android:name="Android.support.PARENT_ACTIVITY"
Android:value="com.example.example.MainActivity" />
</activity>
Option 2: modifiez un paramètre pour la barre d'actions Si vous ne savez pas quelle activité appellera l'activité Paramètres, vous pouvez le créer comme ceci. Premier de votre activité qui étend ActionBarActivity (assurez-vous que vos @imports correspondent au niveau de compatibilité recherché).
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings_test);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
Ensuite, détectez le bouton «Retour», appuyez sur et dites à Android de fermer l'activité actuellement ouverte.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Android.R.id.home:
// app icon in action bar clicked; goto parent activity.
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Ça devrait le faire!
Vous aurez besoin de comparer menuItem.getItemId()
avec Android.R.id.home
dans la méthode onOptionsItemSelected
Dupliquer de Bouton Android Sherlock ActionBar Up
Utilisez-le pour afficher le bouton de retour et passer à l’activité précédente,
final ActionBar actionBar = getSupportActionBar();
assert actionBar != null;
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.back_dark);
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case Android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Plus simple et meilleur: Pour API> = 16
Ajoutez simplement "parentActivityName" pour chaque activité dans Manifest. Le bouton Précédent vous amènera automatiquement à l'activité parent.
<activity
Android:name="com.example.myfirstapp.DisplayMessageActivity"
Android:label="@string/title_activity_display_message"
Android:parentActivityName="com.example.myfirstapp.MainActivity" >
Tout d'abord, utilisez ceci:
ActionBar bar = getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);
Puis définissez l'opération de clic sur le bouton dans la méthode onOptionsItemSelected
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
si quelqu'un d'autre a besoin de la solution
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == Android.R.id.home) {
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
Ajouter cette ligne dans la méthode onCreate ()
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
puis substituez cette méthode
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}