Как исправить ошибку 'android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5035)' в Android
У меня есть макет с дочерним (не как 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)
Как этот ViewPager будет мне как Child of RelativeLayout с havin собственными детскими представлениями?
Ответы
Ответ 1
Проблема решена!
Это произошло потому, что я звоню LayoutInflater.inflate([subViewOfViewPager], [ParentOfViewPager])
должно быть:
LayoutInflater.inflate([subViewOfViewPager], [ParentOfViewPager], false))
Больше слов:
Это произошло из-за того, что при вызове inflate со вторым параметром, вставка представления рассматривается как подшиток данной ViewGroup, а затем я пытаюсь добавить это представление в ViewPager. Представление может иметь только один родительский элемент ViewGroup. Третий параметр устанавливает attachToRoot
в false, чтобы избежать этого.
Ответ 2
Упрощенная версия answer
@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;
}