2012-04-30 8 views
0

設定画面を実装したい。だから私は基本的にdeveloper docsの例に従った。 アクティビティを開始すると、ヘッダリストが1つ見えます(この部分は動作するようです)。しかし、すぐにこのヘッダーをクリックすると、アクティビティが以下のログでクラッシュしました。PreferenceFragment/PreferenceActivityクラッシュ - 理由がわからない

私はSOとGoogleを検索しましたが、このエラーに関する詳しい情報は見つかりませんでした。

1つのCheckBoxPreferenceアイテムにpreference_appearance_screen.xmlを短縮しようとしました。 XML行18でも同じエラーです。だから、このファイルにはエラーが見つからないと思います。

マイアクティビティクラス:

public class TrainerPreferenceActivity extends PreferenceActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public void onBuildHeaders(List<Header> target) { 
     loadHeadersFromResource(R.xml.preference_headers, target); 
    } 

    public static class AppearancePrefFragment extends PreferenceFragment { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.xml.preference_appearance_screen); 
     } 
    } 
} 

preference_headers.xmlファイル:

<?xml version="1.0" encoding="utf-8"?> 
<preference-headers 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <header android:fragment=".TrainerPreferenceActivity$AppearancePrefFragment" 
      android:title="Appearance" 
      android:summary="An example of some preferences." /> 
</preference-headers> 

preference_appearance_screen.xmlファイル:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory 
     android:title="@string/pref_app_cat_theme"> 
    </PreferenceCategory> 
    <PreferenceCategory 
     android:title="@string/pref_app_cat_background"> 
     <CheckBoxPreference 
      android:key="@string/pref_app_bg_iscustom_key" 
      android:title="@string/pref_app_bg_iscustom_title" 
      android:summary="An example of some preferences."/> 
     <CheckBoxPreference 
      android:key="@string/pref_app_bg_hascolor_key" 
      android:title="@string/pref_app_bg_hascolor_title" 
      android:summary="An example of some preferences."/> 
     <CheckBoxPreference 
      android:key="@string/pref_app_bg_hasimage_key" 
      android:title="@string/pref_app_bg_hasimage_title" 
      android:summary="An example of some preferences."/> 
    </PreferenceCategory> 
    <PreferenceCategory 
     android:title="@string/pref_app_cat_behavior"> 
     <CheckBoxPreference 
      android:key="@string/pref_app_orientationisenabled_key" 
      android:title="@string/pref_app_orientationisenabled_title" 
      android:summary="An example of some preferences."/>   
     <CheckBoxPreference 
      android:key="@string/pref_app_gestureisenabled_key" 
      android:title="@string/pref_app_gestureisenabled_title" 
      android:summary="An example of some preferences."/> 
    </PreferenceCategory> 
</PreferenceScreen> 

LogCat:

4月30日17:22:01.215:E/AndroidRuntime(16775):致命的な例外:メイン 4月30日17:22:01.215:E/AndroidRuntime(16775): java.lang.RuntimeException:バイナリXMLファイル行#18: にlayout_width属性を指定する必要があります。 03-30 17:22:01.215:E/AndroidRuntime(16775): の android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491) 04-30 17:22:01.215:E/AndroidRuntime(16775) ): android.view.View.View.View.ViewBaseAttributes(ViewGroup.java:5318) 04-30 17:22:01.215:E/AndroidRuntime(16775): android.view.ViewGroup $ LayoutParams(ViewGroup。 (AbsListView.java:5718) 04-30 17:22:01.215:E/AndroidRuntime(16775): で0-30 をE: AndroidRuntime(16775): android.widget.AbsListView.generateLayoutParams(AbsListView.java:5355) 04-30 17:22:01.215:E/AndroidRuntime(16775):(LayoutInflater.java:477)04-30 17:22:01.215:E/AndroidRuntime(16775): でandroid.view.LayoutInflater.inflate(LayoutInflater.java:477) 30 17:22:01.215:E/AndroidRuntime(16775): android.view.LayoutInflater.inflate(LayoutInflater.java:396)04-30 17:22:01.215:E/AndroidRuntime(16775): android.preference.Preference.onCreateView(Preference.java:474)04-30 17:22:01.215:E/AndroidRuntime(16775): android.preference.Preference.getView(Preference.java:451)04-30 17:22:01.215:E/AndroidRuntime(16775): android.preference.PreferenceGroupAdapter.getView(PreferenceGroupAdapter.java:221) 04-30 17:22:01.215:E/AndroidRuntime(16775): android.widget.AbsListView.obtainView(AbsListView.java:2033)04-30 17:22:01.215:E/AndroidRuntime(16775):at android.widget.ListView.onMeasure(ListView.java:1127)04-30 17:22:01。215:E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.215: E/AndroidRuntime(16775): android.view.ViewGroup。 measureChildWithMargins(ViewGroup.java:4698) 04-30 17:22:01.215:E/AndroidRuntime(16775): android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369) 04-30 17:22:01.215 :E/AndroidRuntime(16775): android.widget.LinearLayout.measureVertical(LinearLayout.java:660) 04-30 17:22:01.215:E/AndroidRuntime(16775): android.widget.LinearLayout.onMeasure (LinearLayout.java:553)04-30 17:22:01.215:E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.2 15: E/AndroidRuntime(16775): android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)で 4月30日17:22:01.215:E/AndroidRuntime(16775):android.widget.FrameLayout で.onMeasure(FrameLayout.java:293)04-30 17:22:01.215:E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.215 : E/AndroidRuntime(16775):22:01.215:E/AndroidRuntime(16775): android.widget.LinearLayoutでandroid.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 4月30日17時。 measureChildBeforeLayout(LinearLayout.java:1369) 04-30 17:22:01.215:E/AndroidRuntime(16775): android.widget.LinearLayout.m (LinearLayout.java:553)04-30 17:22:01.215(英語)で0/30から01/15まで:0/30から17:22:01.215:E/AndroidRuntime(16775): :E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.215: E/AndroidRuntime(16775): android.widget.LinearLayout.measureHorizo​​ntal (LinearLayout.java:999) 04-30 17:22:01.215:E/AndroidRuntime(16775): android.widget.LinearLayout.onMeasure(LinearLayout.java:555)04-30 17:22:01.215: E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.215: E/AndroidRuntime(16775): android.widge t.LinearLayout.measureVertical(LinearLayout.java:812) 04-30 17:22:01.215:E/AndroidRuntime(16775): でandroid.widget.LinearLayout.onMeasure(LinearLayout.java:553)04-30 17 :22:01.215:E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.215: E/AndroidRuntime(16775): android.view .ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 04-30 17:22:01.215:E/AndroidRuntime(16775): でandroid.widget.FrameLayout.onMeasure(FrameLayout.java:293)04-30 17: 22:01.215:E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.215: E/AndroidRuntime(16775): android.widget.LinearLayout.measureVertical(LinearLayout.java:812) 04-30 17:22:01.215:E/AndroidRuntime(16775): android.widget.LinearLayout.onMeasure(LinearLayout.java:553)04-30 17:22:01.215:E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.215: E/AndroidRuntime(16775): android .view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 4月30日17:22:01.215:E/AndroidRuntime(16775): android.widget.FrameLayout.onMeasure(FrameLayout.java:293)で04から30 17:22:01.215:E/AndroidRuntime(16775): com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2092) 04-30 17:22:01。215:E/AndroidRuntime(16775): android.view.View.measure(View.java:12723)04-30 17:22:01.215: E/AndroidRuntime(16775): android.view.ViewRootImpl。 performTraversals(ViewRootImpl.java:1064) 04-30 17:22:01.215:E/AndroidRuntime(16775): android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)04-30 17:22:01.215 :E/AndroidRuntime(16775): android.os.Handler.dispatchMessage(Handler.java:99)04-30 17:22:01.215:E/AndroidRuntime(16775): android.os.Looper.loop (Looper.java:137)04-30 17:22:01.215: E/AndroidRuntime(16775): android.app.ActivityThread.main(ActivityThread.java:4424)04-30 17:22:01.215 :E/AndroidRuntime(16775): java.lang.reflect.Method.invokeNative(ネイティブメソッド)04-30 17:22:01.215:E/AndroidRuntime(16775): java.lang.reflect.Method。 (Method.java:511)04-30 17:22:01.215: E/AndroidRuntime(16775): でcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784) 04- 30 17:22:01.215:E/AndroidRuntime(16775): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)04-30 17:22:01.215:E/AndroidRuntime(16775) :at dalvik.system.NativeStart.main(ネイティブメソッド)

+0

は、あなたのプロジェクトに「クリーン」を試してみました - 念のためには?また、 'android:fragment'リファレンスには完全修飾パッケージ名を使用してみてください。私は一目見て間違いがないとは思わない。 –

+0

完全修飾名:私はすでに試しました。名前のスペルが間違っている場合(私も試した)、私はクラスがスローされたエラーが見つかりません。あなたのコメントの後、私はプロジェクトを清掃しまし​​た。変更はありません。 – KarlKarlsom

+0

申し訳ありませんが、私は簡単なテストプロジェクトを立ち上げましたが、エラーを再現できませんでした.Galaxy Nexusで表示され、正常に動作します。あなたはこれをどのデバイスで実行していますか、他のエミュレータを試しましたか?私が見つけることができる唯一の関連する問題は、[このスタイル/テーマ関連のもの](http://www.mail-archive.com/[email protected]/msg64082.html)です。これは毎回ポップアップするようですあちこち。カスタマイズしましたか?その場合は、可能な限り上記のコードを 'vanilla'として実行して、違いがあるかどうかを確認してください。 –

答えて

2

いいえ、私はクイックテストプロジェクトが、私はエラーを再現することができませんでした - それは表示され、私のギャラクシーネクサスで正常に動作します。あなたはこれをどのデバイスで実行していますか、他のエミュレータを試しましたか?

おそらく関連する問題はthis style/theming-related oneです。これはここやそこにポップアップするようです。カスタマイズしましたか?その場合は、可能な限り上記のコードを 'vanilla'として実行して、違いがあるかどうかを確認してください。

+1

リンクのためにありがとう、それはかなり厳しいバグでした。私はファイルのスタイルでこの属性をコメントアウトしました。xml': ' @ style/MyListSeparator'問題は消えました... –

2

これは、設定画面で使用されているアプリケーションのカスタムスタイルを参照しており、そのカスタムスタイルが必要なプロパティを継承していないためです。カスタムスタイルを維持してこの問題を回避するには、カスタムスタイルが "layout_width"と "layout_height"プロパティを持っていることを確認してください。あなたの場合:

<style name="MyListSeperator" parent="android:Widget.Holo.Light.TextView"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">wrap_content</item> 
     ... 
    </style> 

、その後、あなたは先にアンコメントしに行く:

<item name="android:listSeparatorTextViewStyle">@style/MyListSeparator</item> 
+0

これは受け入れられた答えである必要があります。どうもありがとうございました! – Phil

関連する問題