(Android StackOverflowError in ViewGroup.resetResolvedTextDirection)の前に私はこのエラーについて質問しましたが、エミュレータでエラーを再現するようになったので、この問題が発生する特定の場所を絞り込みました。ListViewをLinearLayoutに追加するときのStackOverflowError
アクティビティを開始するとき、私はAsyncTask
を持っています。私のサーバーから必要なデータを取り出し、すべてのビューを作成します。 AsyncTaskのrun()
メソッド内で、私は、カスタムビューを作成しています(と活動のメインビューに追加する - それは今重要ではありません):
ListingView listing = new ListingView(MainActivity.this);
ListingView
延びている、私のカスタムビュークラスですLinearLayout
から。このカスタムビューのコンストラクタで、私はこのコードを持っている:このカスタムビュークラスで
public ListingView(Context context)
{
this.context = context;
...
LayoutInflater infl = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View top = infl.inflate(R.layout.listing, this, true);
this.addView(top);
...
LinearLayout lst = (LinearLayout)this.findViewById(R.id.LayoutListingTop);
tblVenues = new ListView(context);
tblVenues.setVisibility(VISIBLE);
tblVenues.setItemsCanFocus(true);
tblVenues.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(venueListener != null && venues.size() > 0) { venueListener.selected(venues.get(position)); }
}
});
LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
lst.addView(tblVenues, lp); //this line causes the problem
...
}
を、tblVenues
は
private ListView tblVenues;
として宣言され、ロードされていますXMLはこれです:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/LayoutListingTop"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white">
<ImageView android:id="@+id/ImageView01"
android:layout_width="170dp"
android:layout_height="62dp"
android:src="@drawable/ookl_logo"
android:layout_gravity="left"
android:adjustViewBounds="false"
android:scaleType="fitXY">
</ImageView>
<TextView android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginBottom="5px"
android:gravity="center"
android:textColor="@color/black"
android:text="@string/love_culture"
android:id="@+id/TextView01"
android:textSize="28dip">
</TextView>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:id="@+id/ButtonBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/buttonbar"
android:paddingLeft="10px"
android:paddingRight="10px"
android:paddingTop="5px"
android:paddingBottom="5px">
<Button android:id="@+id/BtnListVenues"
android:layout_width="wrap_content"
android:layout_height="45dip"
android:background="@null"
android:text="@string/button_venues"
android:drawableTop="@drawable/icon_venues_on"
android:textColor="@color/venue_blue"
android:layout_marginRight="10px"
android:textSize="9dip">
</Button>
<Button android:id="@+id/BtnListEvents"
android:layout_width="wrap_content"
android:layout_height="45dip"
android:background="@null"
android:text="@string/button_events"
android:drawableTop="@drawable/icon_events_off"
android:textColor="@color/white"
android:layout_marginRight="10px"
android:textSize="9dip">
</Button>
<Button android:id="@+id/BtnListTrails"
android:layout_width="wrap_content"
android:layout_height="45dip"
android:background="@null"
android:text="@string/button_trails"
android:drawableTop="@drawable/icon_trails_off"
android:textColor="@color/white"
android:layout_marginRight="10px"
android:textSize="9dip">
</Button>
<Button android:id="@+id/BtnListObjects"
android:layout_width="wrap_content"
android:layout_height="45dip"
android:background="@null"
android:text="@string/button_objects"
android:drawableTop="@drawable/icon_objects_off"
android:textColor="@color/white"
android:layout_marginRight="10px"
android:textSize="9dip">
</Button>
<TextView android:id="@+id/TxtLabelDistance"
android:layout_width="fill_parent"
android:text="@string/label_distance"
android:layout_height="wrap_content"
android:gravity="right|bottom"
android:layout_alignParentBottom="true"
android:textColor="@color/white"
android:layout_marginTop="-17px"
android:textSize="9dip">
</TextView>
</LinearLayout>
</LinearLayout>
Ice Cream Sandwich(4.0)ラインでAndroidフォーム1.6から完全に正常に動作します。
で3210のlst.addView(tblVenues, lp);
結果:
java.lang.StackOverflowError
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131)
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131)
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131)
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131)
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131)
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131)
... this line repeats about 200 times or so ...
LogCatに有用他に何もありません。リストビュー全体は、メインのアクティビティビューにまだ追加されていません。なぜなら、エラーは基本的にそのコンストラクタからスローされるからです。
私は問題が何であるかについて完全に迷っています。どんな助けでも大歓迎です。
興味深い...はい、この質問は古く - 私は当時(明らかに)問題を解決しました。しかし、今私は同じ問題の別のレポートを受け取りました - 特に三星銀河4デバイス。奇妙なことに、それはアンドロイドの同じバージョンを持つ他のデバイスでは発生しないので、これはサムスンの実装のバグでなければなりません。残念ながら、SG4は自分で持っていないので、デバッグするのは非常に難しいでしょう。私はあなたのアイデアを試してみましょう。 –