Activity reagiert nicht auf Result von Intent?!

P

Prengepower

Ambitioniertes Mitglied
0
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!?
 
Versuch mal nur finish() statt super.finish();
 
Komisch. Ich mach das immer nur mit finish() ?
Wird onActivityResult überhaupt aufgerufen?
 
Ne leider nicht -.- Das komische ist, bei einem andere Intent - wo ich es genauso gemacht hab - funktioniert es O_o
 
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?
 
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?! ^^
 
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.
 
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..
 
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().
 
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);
}
 
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
 
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 :(
 
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.
 
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

M
Antworten
4
Aufrufe
1.147
swa00
swa00
S
Antworten
17
Aufrufe
529
jogimuc
J
Zurück
Oben Unten