我有一个带有子元素RelativeLayout的布局,然后我创建ViewPager并将其作为Relative布局的子元素插入,所以它就像
+相对布局(根)
|
+--相对布局(子)
|
+----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)
作为亲戚的孩子,ViewPager将如何让我拥有自己的孩子视图?
问题解决了!
发生这种情况是因为我呼叫LayoutInflater.inflate([subViewOfViewPager], [ParentOfViewPager])
应该是:
LayoutInflater.inflate([subViewOfViewPager], [ParentOfViewPager], false))
更多单词:
之所以会发生这种情况,是因为当使用第二个参数调用inflate时,视图插入作为给定ViewGroup的子级,然后我尝试将此视图添加到ViewPager中。视图只能有一个Parent ViewGroup元素。第三个参数将attachToRoot
设置为false以避免这种情况。
答案的简化版本
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.cab_listing, container,false);
return view;
}