2016-10-28 1 views
0

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); 
     } 
    } 
} 

Antwort

0

Ich habe das Problem gelöst.

Ich habe die Rückrufe in jedem Fragment implementiert. Und in der MainFragmentActivity ersetzen Sie die Fragmente.

Verwandte Themen