Ho 2 Attività, ognuna in applicazioni separate. Activity1 ha un pulsante l'utente può cliccare e chiama la seconda attività utilizzando un intento nella sua onClick()
metodo:Android onActivityResult chiamato in anticipo
Intent myIntent = getPackageManager().getLaunchIntentForPackage(com.myProject.Activity2);
startActivityForResult(myIntent, 600);
Questo lancia correttamente Activity2 da Activity1, ma onActivityResult
viene chiamato in Activity1 prima onCreate
viene chiamato in Activity2, invece di in onBackPressed()
dove ho impostato l'intento di ritorno.
Ecco il metodo per onCreate
Activity2:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Ecco la versione corrente di onBackPressed
metodo per 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();
}
mio AndroidManifest.xml ha il seguente filtro intenti per Activity2:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
Ho verificato che il mio launchMode
è standard
(e non singleTask
, ecc.) Come consigliato here e il mio codice di richiesta non è negativo come avvertito here. Ho anche provato lo android:launchMode="singleTop"
, ma anche quello era un no-go.
Ho provato anche non chiamare finish()
in onBackPressed()
per Activity2 come detto here (anche con un solo super.onBackPressed()
come suggerito here) e di nuovo definendolo come suggerito here.
Inoltre, ho provato a commentare la riga intent.putExtra("Stuff", someStuff);
perché sembrava causare problemi per this person.
Qualche idea su cosa potrei fare male?
Grazie mille per essere tornato e postare la tua soluzione. Sono rimasto bloccato su questo problema da molto tempo e ho anche provato tutte le soluzioni che hai trovato nella tua domanda senza successo. Questo l'ha risolto e ha reso la mia giornata molto più bella =) –
Io uso startActivityForResult SENZA setClassName o nomi completi in tutti i miei progetti e funzionano tutti perfettamente tranne per un caso. Quindi ho provato la tua soluzione in quel caso e non ha fatto alcuna differenza. – user316117
2h !! Grazie mille per la soluzione – Anthone