ViewPager从另一个片段背面留空

时间:2014-07-30 17:51:57

标签: android android-fragments android-viewpager

实际上,我在主视图容器中通过片段在单个活动中使用整个应用程序。 当我点击由LoginFragment替换的标题按钮片段时,一个片段包含一个viewPager,并且在返回时我们维护backstack,因此包含viewPager的片段将位于顶部但是我们在{{{{}}中获得了当前项目的空白视图1}}。

2 个答案:

答案 0 :(得分:2)

这是我的解决方案,我已经搜索了很多答案,所以如果你有更好的答案,请与我分享..

我将ViewPager切换到了活动

活动XML

<RelativeLayout ....
   xmlns.

<FrameLayout 
    android:id="@+id/container"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
 />

 <android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
 </...viewPager>

活动类

public MainActivity extends Activity .... {

   private boolean mShowPager;
   private FrameLayout mContainer;
   private ViewPager mPager;

   //Inflate them


  public void showViewPager() {
        mPager.setVisibility(View.Visible);
        mContainer.setVisibilty(View.Gone);
  }

  public void showContainer() {
        mContainer.setVisibility(View.Visible);
        mPager.setVisibilty(View.Gone);
  }


  public void showViewPager(boolean show) {
       mShowPager = show;
  }


  @override
  public void onBackPressed() {

        if(mShowPager) {
             showViewPager();
        }
        super.onBackPressed();

片段示例

  public void onAttach(Activity activity) {

         ((MainActivity)activity).showViewPager(true);
         ((MainActivity)activity).showContainer();

// True表示后退后显示ViewPager //返回表示仍显示Container但按下后退 信息:您决定要显示ViewPager或包含片段的容器,还可以根据需要使用BackStack。

希望它能帮助我。

答案 1 :(得分:0)

我从调试中得到了答案。问题是我在片段内部使用fragmentPager,所以在那里进行适配器初始化,我们必须传递getChildFragmentManager()而不是getFragmentManager()