如何关闭 framelayout 中加载的片段
How to dismiss the fragment loaded in framelayout
我使用这些行删除了片段,我在最后得到了日志,但是这两行不起作用
DPFragment frag = new DPFragment();
getSupportFragmentManager().beginTransaction().remove(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();
将其保留为 class 变量。
所以你的代码应该像
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();
}
现在完美运行了。
我使用这些行删除了片段,我在最后得到了日志,但是这两行不起作用
DPFragment frag = new DPFragment(); getSupportFragmentManager().beginTransaction().remove(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();
将其保留为 class 变量。
所以你的代码应该像
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();
}
现在完美运行了。