Подтвердить что ты не робот

Как исправить ошибку '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 собственными детскими представлениями?

4b9b3361

Ответ 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;
}