我在嘗試在PreferenceFragment
中顯示ListPreference
時收到以下異常。來自XML偏好設置的UnknownFormatConversionException(僅在Oneplus One上)
請注意,這隻發生在Oneplus One設備上。我已經在Nexus 4,Moto G和S5上嘗試過,沒有任何問題。
堆棧跟蹤:
09-08 14:33:50.434 20107-20107/com.callsign.ferret E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.callsign.ferret, PID: 20107
java.util.UnknownFormatConversionException: Conversion:
at java.util.Formatter$FormatSpecifierParser.unknownFormatConversionException(Formatter.java:2321)
at java.util.Formatter$FormatSpecifierParser.advance(Formatter.java:2315)
at java.util.Formatter$FormatSpecifierParser.parseConversionType(Formatter.java:2394)
at java.util.Formatter$FormatSpecifierParser.parseArgumentIndexAndFlags(Formatter.java:2365)
at java.util.Formatter$FormatSpecifierParser.parseFormatToken(Formatter.java:2298)
at java.util.Formatter.doFormat(Formatter.java:1071)
at java.util.Formatter.format(Formatter.java:1042)
at java.util.Formatter.format(Formatter.java:1011)
at java.lang.String.format(String.java:1803)
at java.lang.String.format(String.java:1777)
at android.preference.ListPreference.getSummary(ListPreference.java:168)
at android.preference.Preference.onBindView(Preference.java:550)
at android.preference.Preference.getView(Preference.java:489)
at android.preference.PreferenceGroupAdapter.getView(PreferenceGroupAdapter.java:246)
at android.widget.AbsListView.obtainView(AbsListView.java:2349)
at android.widget.ListView.makeAndAddView(ListView.java:1864)
at android.widget.ListView.fillDown(ListView.java:698)
at android.widget.ListView.fillGap(ListView.java:662)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5007)
at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3424)
at android.widget.AbsListView.onTouchMove(AbsListView.java:3807)
at android.widget.AbsListView.onTouchEvent(AbsListView.java:3638)
at android.view.View.dispatchTouchEvent(View.java:8472)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2400)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2093)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2406)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2406)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2406)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2406)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2406)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2406)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2406)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2625)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1770)
at android.app.Activity.dispatchTouchEvent(Activity.java:2742)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2586)
at android.view.View.dispatchPointerEvent(View.java:8667)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4129)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3995)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3550)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3603)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3569)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3686)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3577)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3743)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImp
的preferences.xml加載到我的PreferenceFragment
:
<ListPreference
android:key="@string/pref_key_app_orientation_frequency"
android:title="@string/pref_app_orientation_frequency"
android:enabled="false"
android:entryValues="@array/pref_orientation_frequency_values"
android:entries="@array/pref_orientation_frequency"/>
arrays.xml含有以上提及的陣列:含上述引用
<string-array name="pref_orientation_frequency_values">
<item>100</item>
<item>50</item>
<item>25</item>
<item>10</item>
</string-array>
<string-array name="pref_orientation_frequency">
<item>@string/percent_100</item>
<item>@string/percent_50</item>
<item>@string/percent_25</item>
<item>@string/percent_10</item>
</string-array>
的strings.xml字符串:
<string name="percent_100">100%</string>
<string name="percent_50">50%</string>
<string name="percent_25">25%</string>
<string name="percent_10">10%</string>
我首先想到它與百分比符號有關,但刪除它並沒有解決問題。我在堆棧跟蹤中看不到任何提示,並且此問題似乎是設備特定的。
好吧,逃避%。或者使字符串不formatable – Selvin
@Selvin我用盡全力,但即使刪除%也沒有解決問題。 –