startActivityForResult不在片段中工作而不是启动活动

问题描述 投票:0回答:3

我想在我的片段中使用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>
android android-fragments android-activity
3个回答
0
投票

在您的活动中您获得结果的位置必须使用与用于添加Fragment的片段相同的对象。


0
投票

请用 qazxsw poi而不是从你的片段中调用qazxsw poi,和

然后在你的片段中处理startActivityForResult(intent, INTENTRESULT);

这将使您回调片段

另一种方案是: 在你的活动中处理MyFragment.this.startActivityForResult(intent, INTENTRESULT);

onActivityResult()

0
投票

您无法从片段发送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(); } } 方法

© www.soinside.com 2019 - 2024. All rights reserved.