2016-07-26 13 views
0

Ich rufe die Absicht von FirstActivity zu SecondActivity.Ich habe startActivityForResult mit dem requestCode und Intent aufgerufen, aber in der SecondActivity ruft setResult die SecondActivity auf, anstatt die FistActivity aufzurufen. Dies ist mein CodesetResult hat dieselbe Aktivität aufgerufen, anstatt die übergeordnete Aktivität aufzurufen

FirstActivity

Intent i = new Intent(getApplicationContext(), SecondActivity.class);       
startActivityForResult(i,1); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
Toast.makeText(getApplicationContext(),"result"+data.getStringExtra("data"),Toast.LENGTH_SHORT).show(); 
} 

SecondActivity

Intent i=getIntent(); 
i.putExtra("data","hi"); 
setResult(1,i); 
finish(); 

Manifest

<activity 
android:name=".FirstActivity" 
android:windowSoftInputMode="adjustPan|stateAlwaysHidden" 
android:theme="@style/MyMaterialTheme" 

android:screenOrientation="portrait"> 
<intent-filter> 
    <data android:scheme="example"/> 
    <action android:name="android.intent.action.VIEW"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <category android:name="android.intent.category.BROWSABLE"/> 
</intent-filter> 
</activity> 
<activity 
    android:name=".SecondActivity" 
    android:theme="@style/MyMaterialTheme" 
    android:windowSoftInputMode="adjustPan|stateAlwaysHidden" 
    android:screenOrientation="portrait"> 
</activity> 
+0

entfernen Sie diese Android: noHistory = "true" aus Ihrer Manifest-Datei – Vickyexpert

Antwort

4

Wechsel von:

Intent i=getIntent(); 

zu:

Intent i=new Intent();// change this line 
+0

Ich habe versucht .Ist nicht funktioniert .. –

1

Pass

setResult(Activity.RESULT_OK, i); 

statt

setResult(1,i); 
+0

nope..its funktioniert nicht :( –

+0

Ich habe Fragmente in dieser Aktivität verwendet..Ist das wird das Problem sein ? –

0

Sie haben es zu implementieren, indem ein neues Objekt der Absicht mit und schließlich aktuelle Aktivität beenden.

Intent resultIntent = new Intent(); 
resultIntent.putExtra("data","hi"); 
setResult(Activity.RESULT_OK, resultIntent); 
finish(); 

Hoffe, das hilft!

+0

ya..ich habe es versucht..Ist nicht funktioniert..Ich denke SecondActivity ist oben auf dem Satck .so es caling die gleiche Aktivität.wenn ich die nohistory für secondActivity onActivityResult wird mit Daten null aufgerufen werden .. –