繁体   English   中英

如何消除加载在framelayout中的片段

[英]How to dismiss the fragment loaded in framelayout

我使用这些行来删除片段,我在末尾获取日志,但是这两行不起作用

DPFragment frag =新的DPFragment(); 。getSupportFragmentManager()的BeginTransaction()除去(FRAG).commit();

这是我在MainActivity中使用的标签列表器

 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {

            if(isActiveFrame){

                DPFragment frag = new DPFragment();
                getSupportFragmentManager().beginTransaction().remove(frag).commit();

                isActiveFrame =false;

            }else
            {

            }
        }

这是我的ActivityMain.xml

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

    <com.example.myproject.externals.CustomViewPager
        android:id="@+id/vp_CustomViewPager"
        android:layout_height="match_parent"
        android:layout_width="match_parent" />

</FrameLayout>

我用这条线来加载碎片

getFragmentManager().beginTransaction().replace(R.id.fl_main, new DPFragment()).addToBackStack(null).commit();

而不是创建新的DPFragment实例DPFragment frag = new DPFragment(); 将其保留为类变量。

所以你的代码应该像

public class MainActivity extends Activity{
       private DPFragment frag;
       ...
           @Override
    protected void onCreate(Bundle savedInstanceState) {
        frag = new DPFragment();
        //use the DPFragment instance frag for adding it to CustomViewPager
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                if (isActiveFrame) {
               getSupportFragmentManager().beginTransaction().remove(frag).commit();
                    isActiveFrame = false;
                } else {
                }
            }
        }
    }
}

我换了线

  getSupportFragmentManager().beginTransaction().remove(frag).commit();

与线

  if (getSupportFragmentManager().findFragmentById(R.id.fl_main) != null) {

                    getSupportFragmentManager().popBackStack();

                }

现在,它可以完美运行了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM