2013-04-18 2 views
10

Ich habe den folgenden Code zu aktivieren, um Home-Taste als eine Schaltfläche zurück zu fungieren. Das Problem, dem ich gegenüberstehe, ist von dieser Aktivität, wenn ich den echten Zurück-Knopf benutze, geht es einfach zur vorherigen Aktivität zurück, so wie ich es verlassen habe. Wenn ich den Home-Button verwende, wird die Seite neu geladen, so dass ich verliere, was vorher gemacht wurde. Ich bin sicher, es ist etwas Einfaches, das ich vermisse.Android: Verwenden Sie das Symbol als Zurück-Taste, ohne vorhergehende Aktivität neu zu laden

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.census_management_search, menu); 
    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    switch (item.getItemId()) 
    { 
     case android.R.id.home: 
      Intent intent = new Intent(this, CensusManagementActivity.class); 
      NavUtils.navigateUpTo(this, intent); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Antwort

15

Statt Intent und NavUtils versuchen onBackPressed() Methode.

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

Ihre beiden Antworten gearbeitet, was ist der Unterschied? – Jhorra

+2

Es ist besser, ['onBackPressed()'] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/app/ Activity.java # Activity.onBackPressed% 28% 29) weil es den Back Stack von Fragmenten überprüft und wenn es leer ist, ruft 'finish()' – vasart

+0

Danke Perfekt funktioniert ohne erneutes Laden der Aktivität onCreate() Methode aufrufen. –

3

Die Home/Up-Schaltfläche soll die neue Aktivität neu laden. Wenn Sie jedoch den Zurück-Button-Funktionalität emulieren möchten, können Sie finish() anrufen können, um zur vorherigen Tätigkeit zurückzukehren:

case android.R.id.home: 
     finish(); 
     return true; 
+0

Beide Antworten funktionierten, was ist der Unterschied? – Jhorra

+0

'finish()' wird immer die aktuelle Aktivität schließen, während 'onBackPressed()' behandelt, wenn sich 'Fragmente auf dem Backstack befinden, diese Operationen zuerst umkehren, bevor die Aktivität geschlossen wird. – ianhanniballake

+0

Ich habe sowohl onBackPressed() als auch finish() ausprobiert und sie laden meine vorherige Aktivität neu. Vorherige Aktivität verwendet Fragmente und es wird jedes Mal aktualisiert, wenn ich das Zurücksymbol drücke. Wenn ich auf Zurück-Taste am Telefon klicke, funktioniert es gut. – emir

Verwandte Themen