Mam 2 czynności, każda w osobnych aplikacjach. Activity1 posiada przycisk użytkownik może kliknąć i wywołuje drugą aktywność przy użyciu intencji w onClick()
metody:Android onActivityResult o nazwie early
Intent myIntent = getPackageManager().getLaunchIntentForPackage(com.myProject.Activity2);
startActivityForResult(myIntent, 600);
to poprawnie uruchamia Activity2 z Activity1, ale onActivityResult
jest wywoływana w Activity1 przed onCreate
jest wywoływana w Activity2, zamiast z onBackPressed()
gdzie skonfigurowałem zamiar powrotu.
Oto metoda onCreate
dla Activity2:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Oto aktualna wersja onBackPressed
sposobu Activity2:
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("Stuff", someStuff);
if(getParent()==null){
setResult(Activity.RESULT_OK, intent);
}else{
getParent().setResult(Activity.RESULT_OK, intent);
}
finish();
super.onBackPressed();
}
My AndroidManifest.xml ma następujący filtr intencyjny Activity2:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
Potwierdziłem, że moja launchMode
jest standard
(i nie singleTask
, itp.) Zgodnie z zaleceniami here, a mój kod żądania nie jest ujemny w postaci ostrzeżenia here. Próbowałem też android:launchMode="singleTop"
, ale to też nie było.
Próbowałem też niestawienie finish()
w onBackPressed()
dla Activity2 jak wspomniano here (również tylko super.onBackPressed()
jako sugerowanej here) i ponownie nazywając go jak sugeruje here.
Dodatkowo próbowałem skomentować linię intent.putExtra("Stuff", someStuff);
, ponieważ wydawało się, że powoduje problemy dla this person.
Jakieś pomysły dotyczące tego, co robię źle?
Dziękuję bardzo za odesłanie i opublikowanie rozwiązania. Utknąłem na tym problemie od dłuższego czasu i ja też wypróbowałem wszystkie rozwiązania, które spotkałeś w swoim pytaniu, bez skutku. To naprawiło to i sprawiło, że mój dzień był o wiele lepszy =) –
Używam startActivityForResult BEO setClassName lub w pełni kwalifikowanych nazw na wszystkich moich projektach i wszystkie działają doskonale, z wyjątkiem jednego przypadku. Więc wypróbowałem twoje rozwiązanie w tym przypadku i nie miało to żadnego znaczenia. – user316117
2h !! Bardzo dziękuję za rozwiązanie – Anthone