【发布时间】: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_fragmentBFrameLayout? -
没错,就是FrameLayout!
-
当我替换 FRagment 时,首先调用 onPause 方法,然后调用 onStop、onDestroyView、onResume 等。我说的对吗?
标签: android listview android-fragments arraylist android-nested-fragment