< 편집>안드로이드는 정확한 폭을 측정해야
새로운 관찰 -과 - 나도 같은 혼자 활동을 서로하고 AppWidget 구성보기로 ViewPager을 시도했습니다 구성보기로 자주 충돌하는 반면, 지속적으로 잘 작동합니다.
또 다른 관찰 - 구성 레이아웃이 ViewPager 인 경우 충돌이 발생하지 않습니다. ViewPager가 FlowLayout 또는 RelativeLayout에 포함 된 경우 자주 충돌합니다.
</편집>
내 AppWidget 구성 XML에 PagerTabStrip와 V4의 ViewPager를 사용하고, 그리고 그것을 완벽하게 대부분의 시간을 작동합니다.
-java.lang.IllegalStateException: Must measure with an exact width
at android.support.v4.view.PagerTitleStrip.onMeasure(PagerTitleStrip.java:428)
at android.view.View.measure(View.java:8335)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1350)
at android.view.View.measure(View.java:8335)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
...etc...
android.support.v4.view.PagerTitleStrip.onMeasure()에서 코드 :
는 그러나, 나는 몇 가지 처리가보기를로드하는 동안 참여 (응용 프로그램 충돌)이 오류
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
//...
if (widthMode != MeasureSpec.EXACTLY) {
throw new IllegalStateException("Must measure with an exact width");
}
//...
}
어떻게 widthMode를 제어 할 수 있습니까 ??
위의 모든 스택이 내 코드 외부에서 발생합니다.
내 코드에서나는 많은 요인을 배제하기 위해 노력했습니다, 결국 나는 근본 원인 분리 관리해야 할 수 있습니다 : 나는 조각 당 5 milis 수면의 모의 "일을"(추가 해요 때
을 X30 조각), 위의 오류가 발생하고 제거 할 때 오류가 사라진 것처럼 보입니다. 이는 나중에 초기 값을 설정 (내 실제 어댑터의 조각을하고있어 실제 작업을 최소화하고 피할 수없는 차이
public static class TestFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.splash, container, false);
try {
Thread.sleep(5); // << mock work causes quite consistent error
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i(TAG, "..onCreateView");
return v;
}
}
을하지 않았다 - 은에서 onCreate()에 작업을 이동 시도 백그라운드 스레드에서 데이터 채우기). 그래서 나는 얼마나 많은 것을 배경 스레드로 연기 할 수 있는지 모른다.
누구나이 경험이 있습니까? 왜 위의 오류가 발생하는지, 그리고 그것을 피할 수 있는지 알고 싶습니다. 참고로
(확실하지 그것은 관련이있는 경우) :
<LinearLayout ...>
<android.support.v4.view.ViewPager
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:id="@+id/aw_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:background="@drawable/dialog_full_holo_dark"
android:fadingEdge="horizontal"
android:fadingEdgeLength="40dp" >
<android.support.v4.view.PagerTabStrip
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</android.support.v4.view.ViewPager>
</LinearLayout>
감사합니다. 전 9 개월 전에이 문제를 해결했지만 다른 사람들에게 도움이 될 수 있습니다. 왜이 코드가 문제를 해결하는지 설명해 주시겠습니까? – auval