片段onCreateView已调用但未显示

时间:2018-10-25 10:18:39

标签: android android-fragments kotlin fragment

我的活动有片段A。单击某个视图时,我需要显示另一个片段B。

我通过以下方式显示片段(A)。

supportFragmentManager
    .beginTransaction()
    .replace(R.id.container, FragmentA(), "FragmentA")
    .commit()

这就是我显示片段(B)的方式

supportFragmentManager.beginTransaction()
    .add(R.id.container, FragmentB(), "FragmentB")
    .addToBackStack("FragmentA")
    .commit()

但是有时,当我多次打电话 showFragmentB() -> popBackStack()片段(B)停止显示,但同时我在日志中看到{{1} }被调用,但片段未显示

3 个答案:

答案 0 :(得分:0)

您应该改为执行此操作。替换下面的代码。

supportFragmentManager.beginTransaction()
.add(R.id.container, FragmentB(), "FragmentB")
.addToBackStack("FragmentA")
.commit()

使用此代码..它有效

supportFragmentManager
    .beginTransaction()
    .replace(R.id.container, FragmentB(), "FragmentB")
    .addToBackStack("FragmentA")
    .commit()

答案 1 :(得分:0)

在您的fragmentActivity中添加

jan 2019

答案 2 :(得分:0)

尝试

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
YOUR_FRAGMENT fragment3 = new YOUR_FRAGMENT ();
fragmentTransaction.replace(R.id.content_frame, fragment3);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

然后,如果需要返回,请按

@Override
public void onBackPressed() {

    if (getFragmentManager().getBackStackEntryCount() == 1) {
        moveTaskToBack(false);
    }else {
        super.onBackPressed();
    }
}