web-dev-qa-db-ja.com

android]の「Android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.Java:5035)」エラーを修正する方法

子(ルートとしてではなく)要素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は、havin独自の子ビューを持つRelativeLayoutの子としてどのようにして私を扱いますか?

45
Dmitry Nelepov

問題が解決しました!

LayoutInflater.inflate([subViewOfViewPager], [ParentOfViewPager])を呼び出したために発生しました

そのはず:

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

その他の単語:

これは、2番目のパラメーターを使用してinflateを呼び出すと、ビューが特定のViewGroupのサブ子として挿入され、このビューをViewPagerに追加しようとしたために発生しました。ビューは、親ViewGroup要素を1つだけ持つことができます。 3番目のパラメーターは、これを回避するためにattachToRootをfalseに設定します。

137
Dmitry Nelepov

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;
}
1
Justcurious