当ViewPager作为Child插入时获取Android错误android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5035)

Dmi*_*pov 44 android android-viewpager android-viewgroup

我有子(不作为root)元素RelativeLayout的布局,然后我创建ViewPager并将其作为我的相对布局的子项插入,所以它就像

+相对布局(根)

|

+ - 相对布局(儿童)

|

+ - - ViewPager

现在一刻 - 一切都好.

但后来我尝试使用自己的布局向ViewPager添加一些视图项,然后我收到错误

10-12 15:32:46.777: E/AndroidRuntime(6031): FATAL EXCEPTION: main
10-12 15:32:46.777: E/AndroidRuntime(6031): java.lang.StackOverflowError
10-12 15:32:46.777: E/AndroidRuntime(6031):     at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5035)
Run Code Online (Sandbox Code Playgroud)

那个ViewPager如何让我成为具有自己的儿童观点的RelativeLayout的孩子?

Dmi*_*pov 133

问题解决了!

这是因为我打电话 LayoutInflater.inflate([subViewOfViewPager], [ParentOfViewPager])

它应该是:

LayoutInflater.inflate([subViewOfViewPager], [ParentOfViewPager], false))

更多的话:

这是因为当使用第二个参数调用inflate时,视图作为给定ViewGroup的子类进行插入,然后我尝试将此视图添加到ViewPager.视图只能有一个Parent ViewGroup元素.第三个参数设置attachToRoot为false以避免这种情况.

  • 在子片段中使用`LayoutInflater.inflate(resId,container,false)`对我来说也是一样的伎俩. (40认同)
  • @anoniim:这实际上是正确的膨胀方式,不应该使用`inflate(id,null)`因为它会忽略布局根元素上的所有`layout _...`属性. (3认同)