Java android-onactivity结果查看页面
我的Java android-onactivity结果查看页面,java,android,android-fragments,tabview,Java,Android,Android Fragments,Tabview,我的main活动带有TabLayout和ViewPager TabLayout有三个选项卡:Tab1、Tab2、Tab3 在我的Tab2中,我要求用户激活GPS(这真的没关系)。关键是我开始了一些等待结果代码或数据的意图: status.startResolutionForResult((Activity) parentView.getContext(), REQUEST_CHECK_SETTINGS); 因此,如果我想在我的片段选项卡2中调用OnActivityResult,那么我应该在我父
main活动带有TabLayout
和ViewPager
TabLayout
有三个选项卡:Tab1、Tab2、Tab3
在我的Tab2中,我要求用户激活GPS(这真的没关系)。关键是我开始了一些等待结果代码或数据的意图:
status.startResolutionForResult((Activity) parentView.getContext(), REQUEST_CHECK_SETTINGS);
因此,如果我想在我的片段选项卡2中调用OnActivityResult
,那么我应该在我父母的(main activity
)OnActivityResult
中执行类似的操作
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
?覆盖Tab2的片段中的OnActivityResult
函数,您将在那里得到调用
要在片段中获得结果,请确保调用startActivityForResult(intent,111)代码>而不是getActivity().startActivityForResult(intent,111)代码>在片段中
你可以这样做
覆盖Activity类中的onActivityresult
,从那里调用Fragment
函数并传递结果。覆盖Tab2 not in Activity的Fragment
中的onActivityresult
函数,您将在那里得到调用
要在片段中获得结果,请确保调用startActivityForResult(intent,111)代码>而不是getActivity().startActivityForResult(intent,111)代码>在片段中
你可以这样做
在Activity类中跳过ActivityResult上的,并从那里调用Fragment
函数并传递结果。因为您使用的是ViewPager,并且必须已经实现了PagerAdapter
所以您可以按索引引用Tab2片段
这样:
Fragment Fragment=pagerAdapter.getItem(1)
试试这个
Tab2Fragment fragment= (Tab2Fragment) pagerAdapter.getItem(1);
fragment.onActivityResult(requestCode, resultCode, data);
因为您使用的是ViewPager,您必须已经实现了PagerAdapter
所以您可以按索引引用Tab2片段
这样:
Fragment Fragment=pagerAdapter.getItem(1)
试试这个
Tab2Fragment fragment= (Tab2Fragment) pagerAdapter.getItem(1);
fragment.onActivityResult(requestCode, resultCode, data);
试着这样做:
将片段添加到视图寻呼机中的列表:
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())
ArrayList fragment=new ArrayList();
公共void addFragments(片段片段、字符串标题)
{
this.fragment.add(fragment);
this.tabTitles.add(titles);
}
公共片段getFragment(int位置){
返回碎片。获取(位置);
}
从活动调用getFragmnet函数:
viewpagerAdapter.getFragmnet(viewpager.getcurrentIndex())
试着这样做:
将片段添加到视图寻呼机中的列表:
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())
ArrayList fragment=new ArrayList();
公共void addFragments(片段片段、字符串标题)
{
this.fragment.add(fragment);
this.tabTitles.add(titles);
}
公共片段getFragment(int位置){
返回碎片。获取(位置);
}
从活动调用getFragmnet函数:
viewpagerAdapter.getFragmnet(viewpager.getcurrentIndex())
这不起作用。我的意思是,它调用Tab2Fragment中的OnActivityResult,但我得到的预期值为空,因为我的TextView绑定在OnCreate中,并且使用您的方法OnCreate似乎没有被调用。分享TextView的故事您没有讨论它。我将为nullpointer异常提供解决方案我需要更多详细信息告诉我完整的场景您想做什么?这是我在表2中的OnCreateView。它会检查GPS是否启用,如果不启用,会显示一个类似这样的弹出窗口,我需要在表2中的onActivityResult中获得结果,但这不起作用。我的意思是,它调用Tab2Fragment中的OnActivityResult,但我得到的预期值为空,因为我的TextView绑定在OnCreate中,并且使用您的方法OnCreate似乎没有被调用。分享TextView的故事您没有讨论它。我将为nullpointer异常提供解决方案我需要更多详细信息告诉我完整的场景您想做什么?这是我在表2中的OnCreateView。嗯,它检查GPS是否启用,如果不启用,显示这样的弹出窗口,我需要在表2中的onActivityResult中获得结果是的,我已经在表2中覆盖onActivityResult,但这仍然返回我“Tab3无法转换到表2”是的,我已经在表2中覆盖onActivityResult,但这仍然返回我“Tab3无法转换到表2”也不起作用,因为我的textview未绑定,所以执行选项为null。我的意思是,在表2中的onactivityresult中,我必须更改textview的文本,但我发现textview为null。也不起作用,因为我得到null执行选项,因为我的textview未绑定。我的意思是,在表2中的onactivityresult中,我必须更改textview的文本,但我发现textview为空。