背景
我有一个使用片段的 android 应用程序。我正在使用一个单独的 FragmentPagerAdapter(即作为一个单独的类,在 MainActivity 之外)。
主活动.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(mViewPager);
}
SectionsPagerAdapter.java
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new frag1();
case 1:
return new frag2();
case 2:
return new frag3();
case 3:
return new frag4();
case 4:
return new frag5();
default:
return null;
}
}
@Override
public int getCount() {
return 5;
}
}
问题
我需要从片段#2(最终目标是更改刷新的,也就是说,片段#3的视图上碎片#2的用户发起可见只要用户进入碎片#3。我曾尝试一旦可见,就分离/附加片段 #3 本身,如下所示:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
getFragmentManager().beginTransaction().detach(this).attach(this).commit();
}
不幸的是,a) 这会降低性能,因为在导航过程中会出现“口吃”;b) 它不能可靠地工作。有些东西(某些按钮的文本)没有刷新,出于某种原因我无法弄清楚。
无论如何,我发现强制刷新/重绘唯一 100% 可靠的方法是重新启动活动(例如,通过用户需要按下前一个片段 #2 上的保存按钮上的 onClickListener)。但这会重新启动片段 #1 上的 Activity
我的问题
考虑到我使用的是单独的 FragmentPagerAdapter 的事实,我如何重新启动此特定片段(#3)上的活动?
我已经研究了其他几个问题/答案,例如:https : //stackoverflow.com/a/36064344
但是当 FragmentPagerAdapter 在一个单独的类上时,我如何实现这样的事情(在意图调用上添加额外内容)?或者,我还能做些什么来刷新片段视图?
如果您需要额外的信息或代码,请告诉我,我很乐意添加说明。
繁华开满天机
相关分类