如何关闭在framelayout中加载的片段

问题描述 投票:0回答:2

我使用这些行删除片段,我在最后得到日志,但这两行不起作用

DPFragment frag = new 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
            {

            }
        }

这是我的Activity_Main.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();
android android-fragments fragmentmanager android-framelayout
2个回答
1
投票

而不是创建新的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 {
                }
            }
        }
    }
}

0
投票

我换了这条线

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

用线条

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

                    getSupportFragmentManager().popBackStack();

                }

现在它完美无缺。

© www.soinside.com 2019 - 2024. All rights reserved.