0
フラグメントを呼び出すFragmentActivity(MainFragmentActivity)があります。私は以下のものが第3の断片だと言うでしょう。バックボタンを押したときにUIが混乱しています
BaseFragment fragSensors = SensorsPagerFragment.newInstance(
m_objAppCredentials);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (bFirst)
ft.add(R.id.flControlContainer, fragSensors, strTag);
else
ft.replace(R.id.flControlContainer, fragSensors, strTag);
以下のクラスは、スワイプ時により多くのフラグメントを呼び出すビューペアを保持します。 その断片の中でアクティビティが呼び出されます。 アクティビティから戻るボタンが押されたとき。第1のフラグメントUIが表示され、ビューページのフラグメントの1つのUIと混合されます。
ビューペア内のフラグメントのUIを破棄するか、またはUIミキシングを回避するにはどうすればよいですか?
public class SensorsPagerFragment extends BaseFragment {
ViewPager m_oVP;
public SensorsPagerFragment() {
LogUtils.LOGD("DEBUG", "SensorsPagerFragment::CTOR");
}
public static SensorsPagerFragment newInstance(AppCredentials objAppCredentials) {
SensorsPagerFragment frag = new SensorsPagerFragment();
m_objAppCredentials = objAppCredentials;
return frag;
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_sensors_pager, container, false);
m_oVP = (ViewPager) v.findViewById(R.id.vpSensors);
//pager.setOffscreenPageLimit(0);
// Attach the adaptor to the PAGER
m_oVP.setAdapter(buildAdapter());
return v;
}
private PagerAdapter buildAdapter() {
return (new SensorFragmentPA(getChildFragmentManager()));
}
@Override
public void onStop() {
super.onStop();
CustomToast.Warning(getActivity().getApplicationContext(),
"SensorsPagerFragment::onStop()", 1);
}
////////////////////////////////////////////////////////////////////////////////////////////////
// class SensorFragmentPA
class SensorFragmentPA extends FragmentPagerAdapter {
public SensorFragmentPA(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return Constants.cTOTAL_PAGES;
}
@Override
public Fragment getItem(int nPageNum) {
SensorsFragment f = SensorsFragment.newInstance(m_objAppCredentials, nPageNum);
return f;
}
@Override
public String getPageTitle(int nPageNum) {
return Integer.toString(nPageNum + 1);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
}
}