2012-04-02 13 views
1

私は、選択項目の変更が反映されたときに設定の要約を変更する機能を追加するためにListPreferenceを拡張しています。これまではクラスを拡張し、コンストラクタを提供し、いくつかのオプションを設定しました。私はInflateExceptionとアプリがクラッシュする、XMLでこのクラスを参照するアクティビティを実行すると:InflateException extends android.preference.ListPreference

E/AndroidRuntime(1542): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.grooveshark.android.radio/com.grooveshark.android.radio.activity.SettingsActivity}: android.view.InflateException: Binary XML file line #88: Error inflating class HighQualityPreference 
E/AndroidRuntime(1542): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768) 
E/AndroidRuntime(1542): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 
E/AndroidRuntime(1542): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
E/AndroidRuntime(1542): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
E/AndroidRuntime(1542): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(1542): at android.os.Looper.loop(Looper.java:130) 
E/AndroidRuntime(1542): at android.app.ActivityThread.main(ActivityThread.java:3835) 
E/AndroidRuntime(1542): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(1542): at java.lang.reflect.Method.invoke(Method.java:507) 
E/AndroidRuntime(1542): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
E/AndroidRuntime(1542): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
E/AndroidRuntime(1542): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(1542): Caused by: android.view.InflateException: Binary XML file line #88: Error inflating class HighQualityPreference 

ここでは、Javaの:

public class HighQualityPreference extends ListPreference 
{ 
    public HighQualityPreference(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 

     setEntries(R.array.high_quality_options); 
     setEntryValues(R.array.high_quality_option_values); 

     setSummary("Six squirrels while on a WiFi connection"); 
    } 

    public HighQualityPreference(Context context) 
    { 
     super(context); 
    } 

} 

は、ここにXMLです:

あなたのよう
 <HighQualityPreference android:key="@string/prefs_high_quality_option" 
      android:persistent="true" /> 

私がしたのは、クラスを拡張することだけです。 ListPreferenceに機能を追加するには、それを拡張する以上のことをする必要がありますか?意味、他の関数をオーバーライドする必要がありますか、他の関数にコールスルーしますか? XMLコンテンツビューを設定する必要はありますか?元のXMLを使用したいのですが、選択したエンティティが変更されたときに要約を更新したいだけです。

+1

あなたのXMLを表示してください。私はあなたがこの 'HighQualityPreference'を完全修飾パッケージ名なしで参照していると思われますが、それを含める必要があります。そうしなければ、インフレータがそれを見つけることができなくなります。 –

+0

@AleksG上記のXMLを追加しました。いいえ、私は完全修飾されたコンポーネント名を含んでいませんでした。 – skyler

+1

コンポーネントの完全修飾パッケージを追加してください。つまり、 ' –

答えて

2

コンポーネントの完全修飾パッケージを追加してみてください、すなわち

<com.your.package.HighQualityPreference android:key="..." ... /> 
関連する問題