2016-07-26 81 views
0

我从FirstActivity调用意图到SecondActivity.I用requestCode和Intent调用startActivityForResult,但在SecondActivity中setResult调用SecondActivity而不是调用FistActivity。这是我的代码setResult调用相同的活动,而不是调用父活动

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(); 

清单

<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

从你的清单文件中删除这个android:noHistory =“true” – Vickyexpert

回答

4

变化来自:

Intent i=getIntent(); 

到:

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

我试过了。它不工作.. –

1

setResult(Activity.RESULT_OK, i); 

代替

setResult(1,i); 
+0

nope..its不工作:( –

+0

我在那个activity中使用过片段..就是这个问题 –

0

你必须有意向的新对象,最后完成当前活动来实现它。

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

希望这有助于!

+0

亚..我试过..它不工作..我认为SecondActivity是最重要的Satck.so其caling相同的activity.if我给secondActivity noAistory onActivityResult将被称为数据null .. –