Subactivity mittels startActivityForResult()

  • Antworten:2
Danny Meier
  • Forum-Beiträge: 7

08.12.2010, 11:37:26 via Website

Hallo zusammen,

Mein Workflow den ich mit startActivityForResult erreichen möchte:
Habe eine Listenansicht mit den Listeneinträgen. Durch einen Button/Menubutton starte ich eine SubActivity für das Erzeugen/Ändern eines Listeneintrags.
Nachdem alles ausgefüllt ist soll wieder Listenansicht erscheinen mit den aktualisierten Einträgen, sofern was geändert hat.

Mein Problem ist, dass wenn ich von der SubActivity zurückkehren will, dass ich zweimal den Ok, oder Cancel Button klicken muss bis wieder die Listenansicht erscheint. Habe den Code stark reduziert. Jedoch tritt dieser Effekt immer noch auf:

In der MainActivity.java
1@Override
2 public boolean onOptionsItemSelected(MenuItem item) {
3 switch(item.getItemId()) {
4 case R.id.menu_add_alarm:
5 AlarmSetting.alarmSettingTransfer = null;
6 Intent alarmItemIntent = new Intent(getApplicationContext(), AlarmItem.class);
7 startActivityForResult(alarmItemIntent, AlarmItem.INTENT_RESULT_ALARM_ITEM);
8 startActivity(alarmItemIntent);
9 return true;
10 default:
11 return false;
12 }
13 }
14
15 @Override
16 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
17 if (resultCode == RESULT_CANCELED)
18 return;
19
20 switch (requestCode) {
21 case AlarmItem.INTENT_RESULT_ALARM_ITEM:
22 loadAlarmList();
23 Toast.makeText(getApplicationContext(), "Back", Toast.LENGTH_SHORT).show();
24 break;
25 }
26
27 super.onActivityResult(requestCode, resultCode, data);
28 }

In der AlarmItem.java
1public void onSaveClick(View view) {
2 // Speichere AlarmSetting wenn OK ...
3 AlarmSetting.alarmSettingTransfer = alarmSetting;
4 this.setResult(RESULT_OK);
5 this.finish();
6 }

Die onSaveClick Methode wird aufgerufen wenn der Button geklickt wird. Nur, beim erstmaligen klicken, wird der Inhalt von onSaveClick() ausgeführt, die Activity beenedet sich aber nicht und bleibt bestehen. Wird der Button ein zweites Mal geklickt, wird der Inhalt von onSaveClick() erneut ausgeführt, die Activity beendet aber und kehrt zur vorherigen Listenansicht zurück.

Woran liegt das? Wo liegt mein Fehler?

Vielen Dank
Gruss Danny

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

08.12.2010, 12:23:04 via Website

Wenn ich das richtig sehe startest Du die selbe Activity zweimal:

1startActivityForResult(alarmItemIntent, AlarmItem.INTENT_RESULT_ALARM_ITEM);
2startActivity(alarmItemIntent);

Schmeiss die zweite Zeile raus.

Gruß
Harald

Antworten
Danny Meier
  • Forum-Beiträge: 7

08.12.2010, 13:17:10 via Website

Das wars...
War natürlich nicht die Absicht das zweimal zu starten. Habe vor lauter Fehlersuche nicht gesehen, dass ich es doppelt starte ;(

Danke dir.

Antworten