Android的碎片问题与方向的变化

我为它定义了活动和两个布局:

  • 布局大土地
  • 布局
  • 第一种布局适用于横向模式下的大屏幕,第二种布局适用于其他情况。 第一个布局包含:

  • 片段1
  • fragment2
  • 第二个布局包含:

  • 片段1
  • 当我在大屏幕上以横向模式启动应用程序时, Activity.onCreate()调用的getSupportFragmentManager().findFragmentById() Activity.onCreate()正确返回这两个片段。 方向更改为纵向后, getSupportFragmentManager().findFragmentById()fragment2返回非空,但应返回null因为此布局中未定义此片段。 问题是返回的片段对象不正确,在访问它时我得到null指针异常。 它应该是null ,不是吗?


    其实......我不认为它应该是null

    Activity显示布局layout-large-land布局后, Activity将在Fragments中添加这两个FragmentManager 。 一旦你旋转你的ActivityFragmentManager保留它的状态和它里面的Fragments ,并且它仍然有Fragment2 ,这就是为什么findFragmentById()不返回null

    Fragment2将会在那里,但它不会被附加到Activity ,您可以使用fragment.isAdded()fragment.isVisible()来检查它。

    如果你的情况,你想知道你的2格(横向)或1格(肖像),也许你应该做以下检查: findViewById(R.id.secondFragmentContainer)==null

    链接地址: http://www.djcxy.com/p/88709.html

    上一篇: android Fragment issue with orientation change

    下一篇: onNewIntent() lifecycle and registered listeners