【问题标题】:OnCreateView not called in android fragmentOnCreateView 未在 android 片段中调用
【发布时间】:2014-08-04 18:18:10
【问题描述】:

左侧有一个 listView,右侧有一个带有复选框的嵌套片段。

复选框位于全局声明的 Arraylist 中。 ArrayList 是在nestedFragment 的onCreateView 方法中动态创建的。

onPause 方法中,我保存复选框状态。

listView的onclick监听,替换Fragments是这样的:

 CheckNodesFragment checkNodesFragment = new CheckNodesFragment();

 FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();


 fragmentTransaction.replace(R.id.child_fragmentB, checkNodesFragment);
 fragmentTransaction.commit();

问题:当我双击 Icarus 或任何列表视图项时,应用程序在 onPause() 中崩溃,因为 不调用所有初始化的onCreateView方法,只调用onPause。

但是,当我添加而不是替换片段时,所有生命周期方法都会被调用,并且 onCreateView() 也会被调用,但是当我添加片段时,屏幕的文本会随着每次添加而变得更加粗体:

【问题讨论】:

  • 它只是在你快速点击两次listitem时崩溃,或者总是在第二次点击后崩溃,不管listitem点击之间的延迟如何?
  • 无论列表项点击之间的延迟如何,它都会崩溃。当我单击两次相同的列表项(例如 Icarus)时,它会崩溃。当我连续单击不同的 listView 项目时,应用程序不会崩溃。
  • 布局是否为 id child_fragmentB FrameLayout?
  • 没错,就是FrameLayout!
  • 当我替换 FRagment 时,首先调用 onPause 方法,然后调用 onStop、onDestroyView、onResume 等。我说的对吗?

标签: android listview android-fragments arraylist android-nested-fragment


【解决方案1】:

我发现了问题,我发现当我替换片段时,第一个生命周期片段的调用是 onPause 方法,然后是 onStop、onDestroyView 等。考虑到这一点,我解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多