(Android StackOverflowError in ViewGroup.resetResolvedTextDirection) 이전에이 오류에 대해 한 가지 질문을했지만 이제는 에뮬레이터에서 오류를 재현하고이 문제가 발생하는 특정 위치를 좁혔습니다.LinearLayout에 ListView를 추가 할 때 ViewGroup.resetResolvedTextDirection의 Android StackOverflowError
내 활동을 시작할 때 내 서버에서 필요한 데이터를 가져와 모든보기를 만드는 AsyncTask
이 있습니다. AsyncTask를의 run()
방법 안에서, 나는 사용자 지정보기를 만드는거야 (그리고 활동의 기본보기에 추가 -하지만 지금은 중요하지) :
ListingView listing = new ListingView(MainActivity.this);
ListingView
LinearLayout
이 사용자 정의 뷰의 생성자에서이 코드가 있습니다
<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>
:이 사용자 정의 뷰 클래스에서
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은 이것이다
Ice Cream Sandwich (4.0) 라인의 Android form 1.6에서 완벽하게 작동합니다.
StackOverflowError
에서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 ...
로그 캣에 유용한 다른 곳은 어디에도 없습니다. 본질적으로 생성자에서 오류가 발생하기 때문에 전체 ListingView는 기본 활동보기에 아직 추가되지 않습니다.
나는 무엇이 문제 일 수 있는지에 관해 전반적인 상실감이 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.
흥미 롭습니다 ... 예,이 질문은 낡았습니다. 당시 (분명히) 문제를 해결했습니다. 그러나 지금은 같은 문제에 대한 또 다른 보고서, 특히 Samsung Galaxy 4 기기에 대한 보고서를 받았습니다. 이상하게도 안드로이드와 같은 버전의 다른 장치에서는 발생하지 않으므로 삼성 구현시 버그가되어야합니다. 불행하게도 SG4는 나 자신이 없으므로 디버깅하기가 어렵습니다. 나는 당신의 생각을 시험해 볼 것입니다. –