Ich habe FragmentActivity (MainFragmentActivity), die einige Fragmente aufrufen. Ich werde sagen, das folgende ist das 3. Fragment.UI wird verwechselt auf der Rückseite Taste drücken
Und unter Klasse hält ein Viewpaper, das beim Wischen mehr Fragment anruft. Und in diesem Fragment wird eine Aktivität aufgerufen. Wenn die Zurück-Taste von der Aktivität gedrückt wird. Das 1. Fragment-UI erscheint und es mischt sich mit der UI eines der Fragmente im Viewpager.
Wie kann man die Benutzeroberfläche des Fragments im Viewpaper zerstören oder UI-Mixing vermeiden?
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);
}
}
}