2

나는 HoloEverywhere와 함께 작동하기 위해 ListPreference을 얻으려고 노력했습니다. XML 파일에서 내 설정을 정의했습니다. 나는 특성들에 holo 네임 스페이스를 사용했다. 환경 설정과 관련된 모든 것은 org.holoeverywhere 패키지의 클래스를 사용하므로 문제가 다른 곳에 있습니다.HoloEverywhere + ListPreference = 충돌

내 응용 프로그램에서 ListPreference을 클릭하면 문제가 발생합니다. 환경 설정에서 선택할 수있는 옵션이있는 대화 상자가 열립니다. 나는 현재 PreferenceFragment을 사용하고

12-20 09:42:59.363: E/AndroidRuntime(3005): FATAL EXCEPTION: main 
12-20 09:42:59.363: E/AndroidRuntime(3005): java.lang.NullPointerException 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at org.holoeverywhere.ArrayAdapter.createViewFromResource(ArrayAdapter.java:204) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at org.holoeverywhere.ArrayAdapter.getView(ArrayAdapter.java:250) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.AbsListView.obtainView(AbsListView.java:2267) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1244) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.ListView.onMeasure(ListView.java:1156) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.View.measure(View.java:15172) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at org.holoeverywhere.widget.LinearLayout.measureChildWithMargins(LinearLayout.java:233) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.View.measure(View.java:15172) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at org.holoeverywhere.widget.LinearLayout.measureChildWithMargins(LinearLayout.java:233) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.View.measure(View.java:15172) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.View.measure(View.java:15172) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.View.measure(View.java:15172) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.View.measure(View.java:15172) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.View.measure(View.java:15172) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1075) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.Choreographer.doFrame(Choreographer.java:525) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.os.Handler.handleCallback(Handler.java:615) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.os.Looper.loop(Looper.java:137) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
12-20 09:42:59.363: E/AndroidRuntime(3005):  at dalvik.system.NativeStart.main(Native Method) 

하지만, 똑같은 내가 addPreferencesFromResource(int)를 사용하여 PreferenceActivity에서 직접 환경 설정을 추가하려고 할 때 발생합니다 대신 나에게 다음과 같은 스택 추적을 제공 충돌합니다.

목록 기본 설정 (XML) 자체 :

<ListPreference 
     holo:defaultValue="false" 
     holo:dialogTitle="@string/sett_inet_access_dial" 
     holo:entries="@array/sett_inet_access_names" 
     holo:entryValues="@array/sett_inet_access_values" 
     holo:key="@string/keysett_inet_access" 
     holo:summary="@string/sett_inet_access_summ" 
     holo:title="@string/sett_inet_access_name" /> 

나는이 내 모든 ListPreference 항목 (내가 여러가) 일어나는 것을 추가하고 싶습니다. source code

+0

확인. 나는 재미있는 것을 발견했다. 이것은 내 에뮬레이터 (Jar of Beans)에서만 발생합니다. 나는 2 개의 물리적 장치 (4.2와 4.1)에서 그것을 테스트했고 거기에서 작동한다 ... 이상한 ... 물리적 장치에 잘못된 점은 기본 설정을위한 대화 상자가 내 앱의 테마를 완전히 무시하고 재고로 되돌아 간다는 것이다. 홀로 봐. – Paul

+0

불행히도 에뮬레이터 문제 만이 아닙니다. 난 그냥 SGSIII 4.0.4를 실행하고 똑같은 문제가 발생합니다 ... – Paul

+0

지금 내 마음에 들어오는 유일한 해결책은 내 자신의'ListPreference' 구현하고 그 일을 피하고 싶습니다. .. – Paul

답변

2

OK 레이아웃에서 해결되지 않았습니다. 나는 그것을 알아 냈다.

. HoloEverywhere 1.4.0에 버그가 있습니다. 문제는 이미보고되고 수정되었습니다. https://github.com/ChristopheVersieux/HoloEverywhere/issues/203

불행히도 수정 사항은 HE GitHub 프로젝트의 마스터 분기에 병합되지 않았습니다. dev 브랜치에 침착하게 앉아서 다음 릴리스를 기다리고있을 것입니다 ...

그래서 나와 같은 문제가 발생하면 dev 브랜치를 사용하거나 리포지토리와 포크를 포크 화하고 THIS을 커밋해야합니다. 마스터 지점.

스타일이 대화 상자에 제대로 적용되지 않는 문제는 여전히 지속됩니다.

0

봐는 :

private View createViewFromResource(int position, View convertView, 
     ViewGroup parent, int resource) { 
    View view; 
    TextView text; 
    if (convertView == null) { 
     view = FontLoader.apply(mInflater.inflate(resource, parent, false)); 
    } else { 
     view = convertView; 
    } 
    try { 
     if (mFieldId == 0) { 
      text = (TextView) view; 
     } else { 
      text = (TextView) view.findViewById(mFieldId); 
     } 
    } catch (ClassCastException e) { 
     Log.e("ArrayAdapter", 
       "You must supply a resource ID for a TextView"); 
     throw new IllegalStateException(
       "ArrayAdapter requires the resource ID to be a TextView", e); 
    } 

    T item = getItem(position); 
    if (item instanceof CharSequence) { 
     text.setText((CharSequence) item); 
    } else { 
     text.setText(item.toString()); 
    } 
    return view; 
} 

텍스트 뷰가 null 인 것 같다, 그것은

+0

나는 그것을했다. 사실 TextView는'view = FontLoader.apply (mInflater.inflate (resource, parent, false));'이 줄에서 올바르게 인스턴스화되었지만 비교 결과'if (mFieldId == 0)'가 실패하고'text = (TextView) view.findViewById (mFieldId);'는'null'이라는 텍스트를 만들어서 실행되었습니다 ... – Paul

+0

그러나 그것은 제가 가진 것만 큼 ... 왜 그런 일이 일어나는지 알 수는 없습니다 ... 저는 ' 모든 프로젝트를 다시 빌드하고,'R' 파일이 신선한 지 확인하기 위해 파일을 청소했습니다.하지만 도움이되지 않았습니다. – Paul

+0

목록 항목의 레이아웃은 어디에 있습니까? –