我想在我的片段中使用startActivityForResult
,我这样做:
public class MyFragment extends Fragment {
.....
new GetNidBase(getContext(), code, Integer.parseInt(_newBlock.split("-")[3]),
WKT1, user, cookie, permissions, _newBlock, (nidBase) -> {
if (!TextUtils.isEmpty(nidBase)) {
Intent intent = new Intent(requireContext(), FormSaveDocument.class);
intent.putExtra(BaseFragment.ARG_COOKIE, HttpUtil.serializeCookie(cookie));
intent.putExtra(BaseFragment.ARG_USER, common.Utils.compactUserInstance(user));
intent.putExtra(BaseFragment.ARG_PERMISSIONS, GsonUtil.createGson().toJson(permissions));
startActivityForResult(intent, INTENTRESULT);
}
我想在片段onActivityResult()中处理我的结果但是我想知道,FormSaveDocument
没有启动? FormSaveDocument
是一个活动类!! startActivityForResult(intent, INTENTRESULT)
不起作用。
我也试过这个:
MyFragment.this.startActivityForResult(intent, INTENTRESULT);
这是我片段中的onActivityResult
:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
if (requestCode == INTENTRESULT && resultCode == 20) {
saveDraw();
}
}
更新
这是myActivity和FormSaveDocument清单信息:
<activity
android:name=".activity.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<activity
android:name=".forms.FormSaveDocument"
android:configChanges="keyboardHidden|orientation|screenSize" />
</activity>
在您的活动中您获得结果的位置必须使用与用于添加Fragment的片段相同的对象。
请用 qazxsw poi而不是从你的片段中调用qazxsw poi,和
然后在你的片段中处理startActivityForResult(intent, INTENTRESULT);
这将使您回调片段
另一种方案是:
在你的活动中处理MyFragment.this.startActivityForResult(intent, INTENTRESULT);
onActivityResult()
您无法从片段发送Intent,您的源上下文必须是您的Activity
所以用onActivityResult
替换@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
getCurrentFrg().onActivityResult(requestCode,resultCode,data);
}catch (Exception e){
e.printStackTrace();
}
}
方法