Activity reagiert nicht auf Result von Intent?!

  • 14 Antworten
  • Neuester Beitrag
Diskutiere Activity reagiert nicht auf Result von Intent?! im Android App Entwicklung im Bereich Betriebssysteme & Apps.
P

Prengepower

Ambitioniertes Mitglied
Hey!

Ich möchte, dass nach dem eine aufgerufene PreferenceActivity ausgeführt wurde, eine Funktion ausgeführt wird.

Die PreferenceActivity wird folgendermaßen aufgerufen, beendet und dann das RESULT abgefragt:

Code:
Intent j = new Intent(SubjectListView.this, Subjectchooser.class);
			startActivityForResult(j, 20);
Code:
@Override
	public void finish() {
		updateSubjects();
		
		Intent data = new Intent();
		setResult(RESULT_OK, data);
		super.finish();
	}
Code:
@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (resultCode == RESULT_OK && requestCode == 10) {
			Parser parser = new Parser();
			parser.execute("");
		}
		
		if (resultCode == RESULT_OK && requestCode == 20) {
			try{
				mDbAdapter.open();
				fillData();
			}catch (Exception e){
				Log.i("Catch", e.toString());
			}
		}
	}
Aber es passiert einfach garnichts!?
 
D

DerSeppel

Ambitioniertes Mitglied
Versuch mal nur finish() statt super.finish();
 
P

Prengepower

Ambitioniertes Mitglied
D

DerSeppel

Ambitioniertes Mitglied
Komisch. Ich mach das immer nur mit finish() ?
Wird onActivityResult überhaupt aufgerufen?
 
P

Prengepower

Ambitioniertes Mitglied
Ne leider nicht -.- Das komische ist, bei einem andere Intent - wo ich es genauso gemacht hab - funktioniert es O_o
 
D

DerSeppel

Ambitioniertes Mitglied
Ah, sorry, jetzt seh ich auch was du machst! ^^ Du überlädst finish()! ^^

Ich mach das immer in ner onClick oder so und rufe dann nur finish auf.

Rufst du dein neues finish(); auch auf?
 
P

Prengepower

Ambitioniertes Mitglied
DerSeppel schrieb:
Ah, sorry, jetzt seh ich auch was du machst! ^^ Du überlädst finish()! ^^

Ich mach das immer in ner onClick oder so und rufe dann nur finish auf.

Rufst du dein neues finish(); auch auf?
Wie meinst du das?! ^^
 
D

DerSeppel

Ambitioniertes Mitglied
Naja. Du überlädst doch hier die Funktion finish():

@Override public void finish() { updateSubjects(); Intent data = new Intent(); setResult(RESULT_OK, data); super.finish(); }
Und an irgendeiner Stelle willst du deine Activity beenden oder? Z.b. wenn ein Button gedrückt wird. Und an dieser Stelle musst du this.finish() bzw. nur finish() aufrufen.
 
P

Prengepower

Ambitioniertes Mitglied
Naja die Funktion wird doch aufgerufen wenn ich die zurücktaste drücke dachte ich. Der soll die nur bei der "Rück"-Taste auf dem Handy aufrufen..
 
D

DerSeppel

Ambitioniertes Mitglied
Nein, das wäre pause oder stop:

public void finish ()

Since: API Level 1

Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().
 
D

DerSeppel

Ambitioniertes Mitglied
Was du suchst, ist etwas in der Art:

Code:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
          finish();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}
 
P

Prengepower

Ambitioniertes Mitglied
Mmh okay und wie kann ich das machen?! Das komische ist ja aber, dass meine Funtion updateSubjects(); beim Drücken der "Zurück"-Taste ausgeführt wird. Demnach muss ja die Funktion finish() aufgerufen werden.
Die Frage ist halt warum nicht die Funktion in der anderen Activity gestartet wird O_o
 
P

Prengepower

Ambitioniertes Mitglied
DerSeppel schrieb:
Was du suchst, ist etwas in der Art:

Code:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
          finish();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}
Selbst das geht nicht.. finish() wird zwar aufgerufen, aber es wird meine funktion fillData() in der anderen Activiy nicht ausgeführt :(
 
D

DerSeppel

Ambitioniertes Mitglied
Hast du mal eine Einzelschrittausführung gemacht? Dann siehst du doch, wo er rein springt und wo nicht.

Mach dir an den relevanten Punkten Log-Ausgaben rein.
 
P

Prengepower

Ambitioniertes Mitglied
Habs jetzt hinbekommen.. Hatte aus Versehen 2 Varianten zum Starten des Intents eingebaut - aber eins mit Result und das andere ohne. Doof nur das immer das aufgerufen wurde, bei dem kein Result verlangt wurde ^^

Danke nochmal ;)
 
Ähnliche Themen - Activity reagiert nicht auf Result von Intent?! Antworten Datum
8
15