2016-04-06 14 views
4

Ich entwickle eine Android App. Ich verwende ActionBar mit AppCompactActivity. In meiner App füge ich Button zur Aktionsleiste hinzu. Aber wenn ich darauf klicke, geht es nicht zur vorherigen Aktivität zurück. Zum Beispiel starte ich Aktivität 2 von Aktivität 1. Aktivität 2 enthält Aktionsleiste mit Zurück-Taste. Aber wenn ich auf der Aktionsleiste Zurück-Button Aktivität klicken 2, ist sie nicht auf Aktivität zurück 1.Display zurück Taste der Aktionsleiste geht nicht zurück in Android

Dies ist, wie ich Aktionsleiste gesetzt für Aktivität 2:

public class EditProfileActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.edit_profile); 
     Toolbar toolbar = (Toolbar)findViewById(R.id.profile_action_toolbar); 
     setSupportActionBar(toolbar); 
     setTitle("Edit Profile"); 
     ActionBar actionBar= getSupportActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
} 

Dies ist, wie ich Aktivität gestartet 1 2 von Aktivität:

Intent i = new Intent(MainActivity.this,SecondActivity.class); 
        startActivity(i); 

Es ist nicht wieder passiert, wenn ich auf diese Taste

enter image description here

Warum es nicht zurückgeht?

Antwort

16

Fügen Sie folgendes zu Ihrem activity.You hat das Click-Ereignis der Schaltfläche Zurück zu handhaben.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()){ 
     case android.R.id.home: 
       onBackPressed(); 
       return true; 
     } 
    return super.onOptionsItemSelected(item); 
} 
+0

Dank. Es funktionierte. Ich werde die Antwort bald grün. Aber ich habe bereits abgestimmt. –

-1

Vor allem immer Android-Richtlinien http://developer.android.com/intl/pt-br/design/patterns/navigation.html zu verhindern, dass Google blockiert Android-Apps.

Versuchen Sie diesen Code in Ihrer Aktivität hinzufügen

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
     case android.R.id.home: 
      onBackPressed(); 
      break; 
    } 

    return super.onOptionsItemSelected(menuItem); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
} 
0

Sie haben onOptionsItemSelected außer Kraft zu setzen und überprüfen Sie die ID des Elements, wenn es gleich mit ids Home-Taste, rufen Sie einfach onBackPressed Methode.

@Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      if (item.getItemId() == android.R.id.home) { 
       onBackPressed(); 
      } 
      return super.onOptionsItemSelected(item); 
     } 
0

Sie müssen definieren, was passieren soll, wenn Sie auf diese Schaltfläche klicken, kann dies in der zweiten Tätigkeit des onOptionsItemSelected Verfahren durchgeführt werden. Beachten Sie die Konstante android.R.id.home, die sich auf die Zurück-Schaltfläche der Aktivität bezieht, die Sie verwenden möchten.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

    case android.R.id.home: 

     finish(); //close the activty 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
5

Hier haben Sie 2 Möglichkeiten:

a) bieten eine parentActivityName zu Ihrem SecondActivity Tag in AndroidManifest.xml wie folgt aus:

<activity 
    ... 
    android:name=".SecondActivity" 
    android:parentActivityName=".MainActivity" > 

b) onOptionsItemSelected in SecondActivity wie dies außer Kraft setzen:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    // Respond to the action bar's Up/Home button 
    case android.R.id.home: 
     onBackPressed(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

ich w sollte vorschlagen, lesen this guide für weitere Informationen.

0

Hier ist der Code

public class EditProfileActivity extends AppCompatActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.edit_profile); 
      Toolbar toolbar = (Toolbar)findViewById(R.id.profile_action_toolbar); 
      setSupportActionBar(toolbar); 
      setTitle("Edit Profile"); 
      ActionBar actionBar= getSupportActionBar(); 
      actionBar.setDisplayHomeAsUpEnabled(true); 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      int id = item.getItemId(); 
      if (item.getItemId() == android.R.id.home) { 
        finish(); 
      } 

      return super.onOptionsItemSelected(item); 
     } 
    }  
Verwandte Themen