如何使用 onAcitivtyResult 进入一些片段 int Android

在我的应用程序中,我有一个activity(MainActivity)和一些fragments(ServicesFragment,NewAddressFragment)。

ServicesFragment用于显示此内容viewPager,NewAddressFragment用于显示! 在这个我使用过,但在其中一个中的一个不调用代码中发生冲突。 我写了下面的代码,请看这个。主要活动 :getFragmentManager().replace ...fragments

fragmentsonActivityResultfragments onActivityResultfragments



@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    Fragment servicesFrag = bottomNavAdapter.getItem(mainViewPager.getCurrentItem());

    if (servicesFrag instanceof ServicesFragment) {

        ((ServicesFragment) servicesFrag).onActivityResult(requestCode, resultCode, data);

    }

}

服务片段:


@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    Log.e("BazaarPaymentLog", "Result");

    Log.e("BazaarPaymentLog", "bazaarRequestCode : " + bazaarRequestCode);

    if (iabHelper == null) return;


    if (requestCode == bazaarRequestCode) {

        String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");

        if (resultCode == RESULT_OK) {

            try {

                JSONObject jo = new JSONObject(purchaseData);

                purchaseToken = jo.getString("purchaseToken");

                productId = jo.getString("productId");

                packageName = jo.getString("packageName");


                Log.e("BazaarPaymentLog", "purchaseToken : " + purchaseToken);

                if (iabHelper != null) {

                    iabHelper.handleActivityResult(requestCode, resultCode, data);

                }

            } catch (JSONException e) {

                e.printStackTrace();

            }

        }

    } else {

        super.onActivityResult(requestCode, resultCode, data);

    }

}

在、调用代码和非调用代码中编写onActivityResult代码时。MainActivityServicesFragment onActivityResultNewAddressFragment onActivityResult


但是当删除onActivityResult代码时MainActivity,ServicesFragment 不是调用 onActivityResult代码和NewAddressFragment 调用 onActivityResult代码。


我该如何解决?


ITMISS
浏览 144回答 3
3回答

素胚勾勒不出你

在 MainActivity 的 onActivityResult 里面使用这个:而不是这个: -@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {Fragment servicesFrag = bottomNavAdapter.getItem(mainViewPager.getCurrentItem());if (servicesFrag instanceof ServicesFragment) {    ((ServicesFragment) servicesFrag).onActivityResult(requestCode, resultCode, data);}}用这个 :-@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {    for(Fragment fragment : getSupportFragmentManager().getFragments()){        fragment.onActivityResult(requestCode,resultCode,data);    }}让我知道它是否有效

慕标琳琳

请将此行添加到活动中的 onActivityResult    Fragment servicesFrag = bottomNavAdapter.getItem(mainViewPager.getCurrentItem()); Fragment addressFrag = findFragmentByTag("NewAddressFragmentTag"); if (servicesFrag instanceof ServicesFragment) { ((ServicesFragment) servicesFrag).onActivityResult(requestCode, resultCode, data); } if (addressFrag instanceof NewAddressFragment) { ((NewAddressFragment) addressFrag).onActivityResult(requestCode, resultCode, data); } }

喵喔喔

我可以解决我的问题!使用以下代码更改 MainActivity 代码:@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    Fragment servicesFrag = bottomNavAdapter.getItem(mainViewPager.getCurrentItem());    Fragment addressFrag = getSupportFragmentManager().findFragmentByTag("NewAddressFragmentTag");    if (servicesFrag instanceof ServicesFragment) {        ((ServicesFragment) servicesFrag).onActivityResult(requestCode, resultCode, data);    }    if (addressFrag instanceof NewAddressFragment) {        super.onActivityResult(requestCode, resultCode, data);    }}我希望对另一位亲爱的开发人员有所帮助
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java