Ich möchte nur Objektinformationen von Activity2 zurück zu Activity1 austauschen, wenn die Schaltfläche "Zurück" gedrückt wird. Alles funktioniert gut, außer zurück in Activity1 onActivityResult(..)
wird nie ausgelöst. Daher kann ich nicht auf die Absicht Informationen zugreifen. Wer weiß warum? nichtonActivityResult() nicht ausgelöst onBackPressed()
checkte ich diese Antworten, aber sie funktionieren: Mein Code
setResult does not work when BACK button pressed
How to pass data from 2nd activity to 1st activity when pressed back? - android
How to pass the values from one activity to previous activity
Send data to a parent activity onBackPressed
(wenn Sie mehr benötigen, sagen ich):
AndroidManifest.xml:
<activity
android:name="com.example.Activity1"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.Activity2"
android:theme="@style/AppTheme.NoActionBar"
android:screenOrientation="portrait">
</activity>
Activity1.java:
public class MainActivity extends AppCompatActivity {
// other stuff...
private void showActivity2(Test test) {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("test", test.getSerializableObject());
startActivityForResult(intent, Activity.RESULT_OK);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_CANCELED) {
Test test = data.getExtras().getParcelable("test");
// Do something...
}
}
Activity2.java:
public class Activity2 extends AppCompatActivity {
// other stuff....
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("test", test.getSerializableObject());
setResult(Activity.RESULT_CANCELED, intent);
super.onBackPressed();
}
}
'onBackPressed()' ist wahrscheinlich zu spät. Rufen Sie 'setResult()' auf, wenn der Benutzer in der Benutzeroberfläche etwas Positives tut, um zu sagen, was er möchte (z. B. auf das Listenelement klickt). In der Regel ruft man dann auch 'finish()' auf, da, sobald der Benutzer entschieden hat, was er will, 'Activity2' nicht mehr benötigt wird. – CommonsWare
Ich habe auch versucht SetResult (xxx) während Activity2 etwas aktualisiert. Trotzdem ... sieht es so aus, als würde Activity1 den Callback ignorieren. – Javatar