Mam aktywność z widokiem listy. Gdy użytkownik kliknie element, otwiera się „przeglądarka” elementu:
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);
}
});
Działa to dobrze, ale na pasku akcji strzałka wstecz obok ikony aplikacji nie jest aktywowana. Czy coś mi brakuje?
java
android
android-3.0-honeycomb
Joaolvcm
źródło
źródło
getActionBar().setDisplayHomeAsUpEnabled(true);
w onCreate iswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}
wonOptionsItemSelected
? oba w ServicesViewActivityOdpowiedzi:
Selvin już umieścił właściwą odpowiedź. Tutaj rozwiązanie w ładnym kodzie:
Funkcja
NavUtils.navigateUpFromSameTask(this)
wymaga zdefiniowania działania nadrzędnego w pliku AndroidManifest.xmlWięcej informacji znajdziesz tutaj .
źródło
getActionBar().setDisplayHomeAsUpEnabled(true);
jeśli korzystasz z bibliotek wsparcia.Upewnij się, że przycisk HomeBar jest włączony w działaniu:
Android, API 5+:
ActionBarSherlock i App-Compat, API 7+:
Android, API 11+:
Przykład,
MainActivity
który rozszerzaActionBarActivity
:W ten sposób wszystkie czynności, które chcesz, mogą mieć backpress.
Android, API 16+:
http://developer.android.com/training/implementing-navigation/ancestral.html
AndroidManifest.xml
:Przykład,
MainActivity
który rozszerzaActionBarActivity
:źródło
Aby włączyć przycisk Wstecz ActionBar, potrzebujesz oczywiście ActionBar w swoim działaniu. Jest to ustalane przez temat, którego używasz. Możesz ustawić motyw swojej aktywności w
AndroidManfiest.xml
. Jeśli używasz np@android:style/Theme.NoTitleBar
. Motywu, nie masz ActionBar. W tym przypadku wywołaniegetActionBar()
zwróci wartość null. Więc najpierw upewnij się, że masz ActionBar.Następnym krokiem jest ustawienie
android:parentActivityName
czynności, do której chcesz nawigować, naciskając przycisk Wstecz. Należy to zrobićAndroidManifest.xml
również.Teraz możesz włączyć przycisk Wstecz w
onCreate
metodzie aktywności „dziecka”.Teraz powinieneś zaimplementować logikę dla przycisku Wstecz. Po prostu nadpisujesz
onOptionsItemSelected
metodę w swojej aktywności „podrzędnej” i sprawdzasz identyfikator przycisku Wstecz, którym jestandroid.R.id.home
.Teraz możesz uruchomić metodę,
NavUtils.navigateUpFromSameTask(this);
ALE jeśli nie określiłeśandroid:parentActivityName
w tobie,AndroidManifest.xml
spowoduje to awarię aplikacji.Czasami tego właśnie chcesz, ponieważ przypomina ci to, że zapomniałeś „czegoś”. Jeśli więc chcesz temu zapobiec, możesz sprawdzić, czy Twoja aktywność ma rodzica stosującego tę
getParentActivityIntent()
metodę. Jeśli zwraca wartość null, nie określono rodzica.W takim przypadku możesz uruchomić
onBackPressed()
metodę, która działa w zasadzie tak samo, jak gdyby użytkownik nacisnął przycisk Wstecz na urządzeniu. Dobra implementacja, która nigdy nie powoduje awarii Twojej aplikacji, to:Zwróć uwagę, że animacja, którą widzi użytkownik, różni się między
NavUtils.navigateUpFromSameTask(this);
ionBackPressed()
.To od Ciebie zależy, którą drogę wybierzesz, ale uważam, że rozwiązanie jest pomocne, zwłaszcza jeśli używasz klasy bazowej do wszystkich swoich działań.
źródło
Plik AndroidManifest:
dodaj Szczegóły
to jest praca :]
źródło
Adnotacje na Androida:
Źródło: https://github.com/excilys/androidannotations
źródło
Myślę, że
onSupportNavigateUp()
jest to najprostszy i najlepszy sposóbsprawdź kod w tym linku Kliknij tutaj, aby uzyskać pełny kod
źródło
https://stackoverflow.com/a/46903870/4489222
Aby to osiągnąć, wystarczy wykonać dwa kroki:
Krok 1: Przejdź do AndroidManifest.xml i dodaj parametr w tagu - android: parentActivityName = ". Home.HomeActivity"
przykład:
Krok 2: w ActivityDetail dodaj akcję dla poprzedniej strony / czynności
przykład:
źródło
W metodzie OnCreate dodaj to:
Następnie dodaj tę metodę:
źródło
w
onCreated
metodzie dla nowego apis.źródło
Jeśli używasz paska narzędzi Toolbar, miałem ten sam problem. Rozwiązałem, wykonując te dwa kroki
źródło
Poniższe kroki wystarczą, aby cofnąć przycisk:
Krok 1: ten kod powinien znajdować się w pliku Manifest.xml
Krok 2: Nie poddasz się
w Aktywności rodzica podczas rozpoczynania Aktywności dziecka.
Krok 3: Jeśli chcesz wrócić do Aktywności rodzicielskiej z Aktywności dziecka, po prostu podaj ten kod Aktywności dziecka.
źródło
Opierając się na odpowiedzi Jareda, musiałem włączyć i zaimplementować zachowanie przycisku cofania paska akcji w kilku działaniach i utworzyłem tę klasę pomocniczą, aby zmniejszyć powielanie kodu.
Wykorzystanie w działaniu:
źródło