Ich habe eine Aktivität mit einer Listenansicht. Wenn der Benutzer auf das Element klickt, wird das Element "Viewer" geöffnet:
List1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Intent nextScreen = new Intent(context,ServicesViewActivity.class);
String[] Service = (String[])List1.getItemAtPosition(arg2);
//Sending data to another Activity
nextScreen.putExtra("data", datainfo);
startActivityForResult(nextScreen,0);
overridePendingTransition(R.anim.right_enter, R.anim.left_exit);
}
});
Dies funktioniert einwandfrei, aber in der Aktionsleiste wird der Zurückpfeil neben dem App-Symbol nicht aktiviert. Vermisse ich etwas
java
android
android-3.0-honeycomb
Joaolvcm
quelle
quelle
getActionBar().setDisplayHomeAsUpEnabled(true);
in onCreate undswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}
inonOptionsItemSelected
? beide in ServicesViewActivityAntworten:
Selvin hat bereits die richtige Antwort gepostet. Hier die Lösung in hübschem Code:
Für diese Funktion
NavUtils.navigateUpFromSameTask(this)
müssen Sie die übergeordnete Aktivität in der Datei AndroidManifest.xml definierenSehen Sie hier für weitere Lektüre.
quelle
getActionBar().setDisplayHomeAsUpEnabled(true);
Sie, falls Sie Support-Bibliotheken verwenden.Stellen Sie sicher, dass die ActionBar-Home-Schaltfläche in der Aktivität aktiviert ist:
Android, API 5+:
ActionBarSherlock und App-Compat, API 7+:
Android, API 11+:
Beispiel
MainActivity
, das erweitertActionBarActivity
:Auf diese Weise können alle gewünschten Aktivitäten die Backpress haben.
Android, API 16+:
http://developer.android.com/training/implementing-navigation/ancestral.html
AndroidManifest.xml
::Beispiel
MainActivity
, das erweitertActionBarActivity
:quelle
Um die Schaltfläche "ActionBar zurück" zu aktivieren, benötigen Sie offensichtlich eine ActionBar in Ihrer Aktivität. Dies wird durch das von Ihnen verwendete Thema festgelegt. Sie können das Thema für Ihre Aktivität in der
AndroidManfiest.xml
. Wenn Sie zB das@android:style/Theme.NoTitleBar
Thema verwenden, haben Sie keine ActionBar. In diesem Fall gibt der Aufruf vongetActionBar()
null zurück. Stellen Sie also sicher, dass Sie zuerst eine ActionBar haben.Der nächste Schritt besteht darin
android:parentActivityName
, die Aktivität festzulegen, zu der Sie navigieren möchten, wenn Sie die Zurück-Taste drücken. Dies sollte auch in der gemachtAndroidManifest.xml
werden.Jetzt können Sie die Zurück-Schaltfläche in der
onCreate
Methode Ihrer "untergeordneten" Aktivität aktivieren .Jetzt sollten Sie die Logik für die Zurück-Schaltfläche implementieren. Sie überschreiben einfach die
onOptionsItemSelected
Methode in Ihrer "untergeordneten" Aktivität und überprüfen die ID der Schaltfläche "Zurück"android.R.id.home
.Jetzt können Sie die Methode
NavUtils.navigateUpFromSameTask(this);
auslösen , ABER wenn Sie dieandroid:parentActivityName
in Ihnen nicht angegeben haben,AndroidManifest.xml
stürzt Ihre App ab.Manchmal ist es das, was Sie wollen, weil es Sie daran erinnert, dass Sie "etwas" vergessen haben. Wenn Sie dies verhindern möchten, können Sie mithilfe der
getParentActivityIntent()
Methode überprüfen, ob Ihre Aktivität übergeordnete Elemente hat. Wenn dies null zurückgibt, haben Sie das übergeordnete Element nicht angegeben.In diesem Fall können Sie die
onBackPressed()
Methode auslösen, die im Grunde das Gleiche bewirkt, als würde der Benutzer die Zurück-Taste am Gerät drücken. Eine gute Implementierung, die Ihre App niemals zum Absturz bringt, wäre:Bitte beachten Sie, dass die Animation, die der Benutzer sieht, zwischen
NavUtils.navigateUpFromSameTask(this);
und unterschiedlich istonBackPressed()
.Es liegt an Ihnen, welchen Weg Sie einschlagen, aber ich fand die Lösung hilfreich, insbesondere wenn Sie für alle Ihre Aktivitäten eine Basisklasse verwenden.
quelle
AndroidManifest-Datei:
Details hinzufügenAktivität:
es ist Arbeit :]
quelle
Android Anmerkungen:
Quelle: https://github.com/excilys/androidannotations
quelle
Ich denke, das
onSupportNavigateUp()
ist der einfachste und beste Weg, dies zu tunÜberprüfen Sie den Code in diesem Link. Klicken Sie hier, um den vollständigen Code anzuzeigen
quelle
https://stackoverflow.com/a/46903870/4489222
Um dies zu erreichen, gibt es einfach zwei Schritte:
Schritt 1: Gehen Sie zu AndroidManifest.xml und fügen Sie den Parameter in tag - android hinzu: parentActivityName = ". Home.HomeActivity"
Beispiel:
Schritt 2: Fügen Sie in ActivityDetail Ihre Aktion für die vorherige Seite / Aktivität hinzu
Beispiel:
quelle
Fügen Sie in der OnCreate-Methode Folgendes hinzu:
Fügen Sie dann diese Methode hinzu:
quelle
in
onCreated
Methode für die neue apis.quelle
Wenn Sie die Symbolleiste verwenden, hatte ich das gleiche Problem. Ich habe es gelöst, indem ich diesen beiden Schritten gefolgt bin
quelle
Die folgenden Schritte reichen aus, um die Schaltfläche zurück zu drücken:
Schritt 1: Dieser Code sollte sich in Manifest.xml befinden
Schritt 2: Sie werden nicht geben
in Ihrer Elternaktivität beim Starten der Kinderaktivität.
Schritt 3: Wenn Sie von der untergeordneten Aktivität zur übergeordneten Aktivität zurückkehren müssen, geben Sie einfach diesen Code für die untergeordnete Aktivität an.
quelle
Aufbauend auf Jareds Antwort musste ich das Verhalten der Zurückschaltfläche der Aktionsleiste in mehreren Aktivitäten aktivieren und implementieren und diese Hilfsklasse erstellen, um die Codeduplizierung zu reduzieren.
Verwendung in einer Aktivität:
quelle