2016-10-28 8 views
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); 
     } 
    } 
} 

答えて

0

私はこの問題を解決しました。

私は各フラグメントにコールバックを実装しました。 MainFragmentActivityでは、フラグメントを置き換えます。

関連する問題