2

私はListPreference、HoloEverywhere を使用するのに苦労しています。XML ファイルで設定を定義しました。holo属性には名前空間を使用しました。org.holoeverywhere設定に関連するものはすべてパッケージのクラスを使用するため、問題は別の場所にあります。

アプリでをクリックすると問題が発生しますListPreference。設定は、選択するオプションを含むダイアログを開く必要があります。代わりにクラッシュし、次のスタック トレースが表示されます。

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)

私は現在 を使用していますが、を使用PreferenceFragmentして設定を直接追加しようとしたときにまったく同じことが起こります。PreferenceActivityaddPreferencesFromResource(int)

リスト設定 (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 アイテム (複数あります) で発生することを追加したいと思います。

4

2 に答える 2

2

わかった。私はそれを理解しました。

それが判明したとして。HoloEverywhere 1.4.0 にはバグがあります。この問題はすでに報告され、修正されています: https://github.com/ChristopheVersieux/HoloEverywhere/issues/203

残念ながら、修正は HE GitHub プロジェクトのマスター ブランチにマージされていません。次のリリースを待っている可能性が最も高い開発ブランチに静かに座っています...

したがって、私と同じ問題がある場合は、dev ブランチを使用するか、リポジトリをフォークして、このコミットを master ブランチにチェリーピックする必要があります。

ただし、スタイルがダイアログに適切に適用されないという問題は引き続き発生します。

于 2012-12-20T18:02:47.690 に答える
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;
}

textView が null のようで、レイアウトから解決されませんでした

于 2012-12-20T10:09:52.283 に答える