Chcę zrobić coś prostego w aplikacji na Androida. Jak można wrócić do poprzedniej aktywności.
Jakiego kodu potrzebuję, aby wrócić do poprzedniej aktywności
Chcę zrobić coś prostego w aplikacji na Androida. Jak można wrócić do poprzedniej aktywności.
Jakiego kodu potrzebuję, aby wrócić do poprzedniej aktywności
Odpowiedzi:
Działania na Androida są przechowywane w stosie działań. Powrót do poprzedniej czynności może oznaczać dwie rzeczy.
Otworzyłeś nowe działanie z innego działania za pomocą startActivityForResult . W takim przypadku możesz po prostu wywołać funkcję finishActivity () z kodu, a to zabierze Cię z powrotem do poprzedniej aktywności.
Śledź stos aktywności. Za każdym razem, gdy zaczynasz nowe działanie z zamiarem, możesz określić flagę zamiaru, taką jak FLAG_ACTIVITY_REORDER_TO_FRONT
lub FLAG_ACTIVITY_PREVIOUS_IS_TOP
. Możesz użyć tego do losowego przełączania działań w aplikacji. Jednak nie korzystałem z nich zbyt często. Spójrz na flagi tutaj: http://developer.android.com/reference/android/content/Intent.html
Jak wspomniano w komentarzach, jeśli czynność jest otwierana za pomocą, startActivity()
wówczas można ją zamknąć za pomocą finish()
. Jeśli chcesz użyć przycisku W górę, możesz to złapać onOptionsSelected(MenuItem item)
metodą sprawdzania ID przedmiotu w android.R.id.home
przeciwieństwie do tego, R.id.home
co wspomniano w komentarzach.
Spróbować Activity#finish()
. Jest to mniej więcej to, co domyślnie robi przycisk Wstecz.
this.finish();
#
Jest to wskaźnik, który finish()
jest nie-statyczne metody z klasy aktywności. To nie jest poprawna Java, ale pomaga wyjaśnić, w jaki sposób można użyć tej metody.
.
, tj .:Activity.someStaticMethod()
Po prostu napisz po zakończeniu () . Zabierze Cię do poprzedniej aktywności.
Tylko to
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
W ten sposób przejdziesz do poprzedniej czynności, zachowując stos i usuwając wszystkie czynności po nim ze stosu.
Na przykład, jeśli stos był A-> B-> C-> D i zaczniesz B z tą flagą, stos będzie A-> B
Czy chcesz przejąć kontrolę nad zachowaniem przycisku Wstecz? Możesz zastąpić przycisk Wstecz (aby przejść do określonego działania) za pomocą jednej z dwóch metod.
Dla Androida 1.6 i niższych:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
Lub jeśli obsługujesz tylko system Android 2.0 lub nowszy:
@Override
public void onBackPressed() {
// do something on back.
return;
}
Aby uzyskać więcej informacji: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
Wystarczy wywołać tę metodę, aby zakończyć bieżącą aktywność lub wrócić przez onBackPressed
finish();
LUB
onBackPressed();
jeśli chcesz przejść tylko do poprzedniej aktywności użyj
finish();
LUB
onBackPressed();
jeśli chcesz przejść do drugiej aktywności lub poniżej, użyj następujących czynności:
intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
Dodaj to w swojej metodzie onCLick (), wróci do poprzedniej aktywności
koniec();
lub Możesz tego użyć. To działało idealnie dla mnie
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Jeśli poprawnie skonfigurowałeś plik AndroidManifest.xml z nadrzędnym działaniem, możesz użyć:
NavUtils.navigateUpFromSameTask(this);
Gdzie jest to aktywność Twojego dziecka.
Spróbuj to zrobić tak, jak musisz nacisnąć przycisk Wstecz
finish();
onBackPressed();
Możesz bezpośrednio zadzwonić onBackPressed
to najłatwiejszy sposób.
Zobacz Wróć do poprzedniej czynności, aby uzyskać szczegółowe informacje
Rozpocznij drugą czynność za pomocą zamiaru (użyj startActivity
lub startActivityForResult
zgodnie z własnymi wymaganiami). Teraz, gdy użytkownik naciśnie przycisk Wstecz, bieżąca aktywność na górze zostanie zamknięta, a poprzednie zostanie wyświetlone.
Teraz Załóżmy, że masz dwie czynności, jedną do wyboru niektórych ustawień dla użytkownika, takich jak język, kraj itp., A po wybraniu tego użytkownik kliknie przycisk Dalej, aby przejść do formularza logowania (na przykład). Teraz, jeśli logowanie się nie powiedzie, to użytkownik będzie w trakcie logowania, co jeśli logowanie się powiedzie?
Jeśli logowanie się powiedzie, musisz rozpocząć inną aktywność. Oznacza to, że trzecia aktywność zostanie uruchomiona i nadal będą działać dwie czynności. W takim przypadku dobrze będzie użyć startActivityForResult
. Po pomyślnym zalogowaniu wyślij dane OK z powrotem do pierwszej aktywności i zamknij aktywność logowania. Teraz, gdy dane zostaną odebrane, rozpocznij trzecie działanie i zamknij pierwsze działanie, używając zakończenia.
@Override
public void onBackPressed() {
super.onBackPressed();
}
a jeśli chcesz na przycisk kliknij wróć, a następnie po prostu wstaw
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Wypróbuj to działa zarówno na przycisku Wstecz paska narzędzi, jak i przycisku Wstecz sprzętu .
Istnieje kilka przypadków, aby wrócić do poprzedniej aktywności:
Przypadek 1: jeśli chcesz przywrócić wynik do poprzedniej aktywności, ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
Przypadek 2: Aktywność A -> FBHelperActivity ----> Aktywność A.
ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivity(intent);
FBHelperActivity.java
after getting of result call finish();
By this way your second activity will finish and because
you did not call finish() in your first activity then
automatic first activity is in back ground, will visible.
Następnie masz dwie możliwości powrotu z bieżącej aktywności do poprzedniej aktywności:
Po prostu zadzwoń: finish()
pod przyciskiem nasłuchiwania kliknięcia przycisku lub Zastąp następującą metodę cofnięcia za pomocą przycisku powrotu systemu:
@Override
public void onBackPressed() {
super.onBackPressed();
}
Oprócz wszystkich wspomnianych odpowiedzi, są one nadal alternatywnym sposobem na zrobienie tego, powiedzmy, że masz dwie klasy, klasę A i klasę B.
Do klasy A wykonałeś niektóre czynności, takie jak zaznaczenie pola wyboru, wydrukowałeś pewne dane i zamiar do klasy B. Klasa B, chcesz przekazać wiele wartości do klasy A i zachować poprzedni stan klasy A, możesz użyć, wypróbuj tę alternatywę metoda lub pobierz kod źródłowy, aby to wykazać
lub
http://developer.android.com/reference/android/content/Intent.html
Po prostu spróbuj tego, pierwsza aktywność
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
W twojej drugiej działalności
@Override
public void onBackPressed() {
this.finish();
}