我正试图在片段中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);
}
我想在片段的onActivityForResult()中处理结果,但是我想知道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>
答案 0 :(得分:0)
在活动中获得结果的地方,您必须使用与添加片段相同的片段对象。
答案 1 :(得分:0)
请使用
startActivityForResult(intent, INTENTRESULT);
插入了片段中的MyFragment.this.startActivityForResult(intent, INTENTRESULT);
,并且
然后在片段中的句柄onActivityResult()
之后
这将使您回叫片段
另一个解决方案是:
处理您的活动中的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();
}
}
答案 2 :(得分:0)
您不能从片段发送Intent,您的源上下文必须是您的Activity
因此将requireContext()
方法替换为getActivity()