android - onactivity结果viewpager

时间:2016-08-05 12:15:12

标签: java android android-fragments tabview

我的MainActivity TabLayoutViewPager

TabLayout有3个标签:Tab1,Tab2,Tab3。

在我的Tab2中,我要求用户激活GPS(这没关系)。关键是我开始等待结果代码或数据的意图:

status.startResolutionForResult((Activity) parentView.getContext(), REQUEST_CHECK_SETTINGS);

所以,如果我想在我的OnActivityResult Tab2中拨打Fragment,那么我应该在我的父母(MainActivityonActivityResult中执行此类操作。

case ACTIVITY_RESULT_FROM_TAB2:{
                FragmentManager fragmentManager = getSupportFragmentManager();
                Fragment fragment               = fragmentManager.findFragmentById(R.id.main_fragment);
                if(fragment != null){
                    ((Tab2Fragment) fragment).onActivityResult(requestCode, resultCode, data);
                }
            }

但它返回强制转换异常(Tab3无法转换为Tab2),因为添加的最后一个片段是Tab3。如何正确地从Tab2调用OnActivityResult

3 个答案:

答案 0 :(得分:0)

覆盖Tab2的onActivityResult中的Fragment功能而非活动,您将在那里接听电话。

要在您的片段中获得结果,请务必在片段中调用startActivityForResult(intent,111);而不是getActivity().startActivityForResult(intent,111);

你可以这样做..

在Activity类中覆盖onActivityresult并从那里调用Fragment的函数并传递结果。

答案 1 :(得分:0)

由于您使用的是ViewPager,因此必须实施PagerAdapter。

所以你可以通过索引参考Tabrence Fragment。

以这种方式:

Fragment fragment = pagerAdapter.getItem(1);

试试这个

Tab2Fragment fragment= (Tab2Fragment)  pagerAdapter.getItem(1);
fragment.onActivityResult(requestCode, resultCode, data);

答案 2 :(得分:0)

尝试这样做: 在视图寻呼机中将片段添加到列表中:

ArrayList<Fragment> fragment=new ArrayList<>();
    public void addFragments(Fragment fragment,String titles)
{

    this.fragment.add(fragment);
    this.tabTitles.add(titles);
}

public Fragment getFragment(int position) {
   return fragment.get(position);
}


call getFragmnet function from activity:

viewpagerAdapter.getFragmnet(viewpager.getcurrentIndex())