2016-10-05 5 views
0

私は、次のアクティビティがあります。アンドロイド:レイアウトにListPreferenceで活動を開始することはできません

public class PreferenceActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (getFragmentManager().findFragmentById(android.R.id.content)==null) { 
      getFragmentManager() 
        .beginTransaction() 
        .add(android.R.id.content, new Display()) 
        .commit(); 
     } 
    } 

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

} 

あるpreferences.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- A 'parent' preference, which enables/disables child preferences (below) 
     when checked/unchecked. --> 
    <SwitchPreference 
     android:defaultValue="true" 
     android:key="preferences_app_enabled" 
     android:summary="Select your favourite" 
     android:title="@string/app_enabled"/> 

    <!-- 
    <ListPreference 
     android:defaultValue="1" 
     android:key="preferences_translation_type" 
     android:summary="Select your favourite" 
     android:title="@string/translation_type" 
     android:entries="@array/translation_type_items"/> 
    --> 

</PreferenceScreen> 

私がクラッシュしたXMLアプリケーションのListPreference部分をコメント解除次の例外を除いて、start(PreferenceActivityはランチャーです):

*PreferenceActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class java.lang.reflect.Constructo* 

配列の値以下のとおりです。

<resources> 
    <string-array name="translation_type_items"> 
     <item>floating_window</item> 
     <item>notification</item> 
     <item>toast_message</item> 
    </string-array> 
    <string-array name="translation_type_values"> 
     <item>@string/floating_window</item> 
     <item>@string/notification</item> 
     <item>@string/toast_message</item> 
    </string-array> 
</resources> 

のフルスタックトレースこの問題くださいを引き起こしている何

10-05 08:31:33.064 31472-31472/domainName.com.bubbletranslate E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: domainName.com.bubbletranslate, PID: 31472 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{domainName.com.bubbletranslate/domainName.com.bubbletranslate.activity.PreferenceActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class java.lang.reflect.Constructor 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3738) 
    at android.app.ActivityThread.access$900(ActivityThread.java:135) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class java.lang.reflect.Constructor 
    at android.preference.GenericInflater.createItem(GenericInflater.java:397) 
    at android.preference.GenericInflater.onCreateItem(GenericInflater.java:417) 
    at android.preference.GenericInflater.createItemFromTag(GenericInflater.java:428) 
    at android.preference.GenericInflater.rInflate(GenericInflater.java:481) 
    at android.preference.GenericInflater.inflate(GenericInflater.java:326) 
    at android.preference.GenericInflater.inflate(GenericInflater.java:263) 
    at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:272) 
    at android.preference.PreferenceFragment.addPreferencesFromResource(PreferenceFragment.java:285) 
    at domainName.com.bubbletranslate.activity.PreferenceActivity$Display.onCreate(PreferenceActivity.java:31) 
    at android.app.Fragment.performCreate(Fragment.java:1678) 
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859) 
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1044) 
    at android.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1848) 
    at android.app.Activity.onCreate(Activity.java:902) 
    at android.support.v4.app.BaseFragmentActivityDonut.onCreate(BaseFragmentActivityDonut.java:41) 
    at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:315) 
    at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:85) 
    at domainName.com.bubbletranslate.activity.PreferenceActivity.onCreate(PreferenceActivity.java:17) 
    at android.app.Activity.performCreate(Activity.java:5231) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  
    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3738)  
    at android.app.ActivityThread.access$900(ActivityThread.java:135)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:136)  
    at android.app.ActivityThread.main(ActivityThread.java:5017)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  
    at dalvik.system.NativeStart.main(Native Method)  
    Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Constructor.constructNative(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at android.preference.GenericInflater.createItem(GenericInflater.java:383) 
    at android.preference.GenericInflater.onCreateItem(GenericInflater.java:417)  
    at android.preference.GenericInflater.createItemFromTag(GenericInflater.java:428)  
    at android.preference.GenericInflater.rInflate(GenericInflater.java:481)  
    at android.preference.GenericInflater.inflate(GenericInflater.java:326)  
    at android.preference.GenericInflater.inflate(GenericInflater.java:263)  
    at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:272)  
    at android.preference.PreferenceFragment.addPreferencesFromResource(PreferenceFragment.java:285)  
    at domainName.com.bubbletranslate.activity.PreferenceActivity$Display.onCreate(PreferenceActivity.java:31)  
    at android.app.Fragment.performCreate(Fragment.java:1678)  
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859)  
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)  
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1044)  
    at android.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1848)  
    at android.app.Activity.onCreate(Activity.java:902)  
    at android.support.v4.app.BaseFragmentActivityDonut.onCreate(BaseFragmentActivityDonut.java:41)  
    at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:315)  
    at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:85)  
    at domainName.com.bubbletranslate.activity.PreferenceActivity.onCreate(PreferenceActivity.java:17)  
    at android.app.Activity.performCreate(Activity.java:5231)  
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  
    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3738)  
    at android.app.ActivityThread.access$900(ActivityThread.java:135)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:136)  
    at android.app.ActivityThread.main(ActivityThread.java:5017)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  
    at dalvik.system.NativeStart.main(Native Method)  
    Caused by: java.lang.NullPointerException 
    at android.content.res.AssetManager.getResourceTextArray(AssetManager.java:215) 
    at android.content.res.Resources.getTextArray(Resources.java:448) 
    at android.content.res.TypedArray.getTextArray(TypedArray.java:629) 
    at android.preference.ListPreference.<init>(ListPreference.java:51) 
at java.lang.reflect.Constructor.constructNative(Native Method)  
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)  
at android.preference.GenericInflater.createItem(GenericInflater.java:383)  
at android.preference.GenericInflater.onCreateItem(GenericInflater.java:417)  
at android.preference.GenericInflater.createItemFromTag(GenericInflater.java:428)  
at android.preference.GenericInflater.rInflate(GenericInflater.java:481)  
at android.preference.GenericInflater.inflate(GenericInflater.java:326)  
at android.preference.GenericInflater.inflate(GenericInflater.java:263)  
at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:272)  
at android.preference.PreferenceFragment.addPreferencesFromResource(PreferenceFragment.java:285)  
at domainName.com.bubbletranslate.activity.PreferenceActivity$Display.onCreate(PreferenceActivity.java:31)  
at android.app.Fragment.performCreate(Fragment.java:1678)  
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859)  
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)  
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1044)  
at android.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1848)  
at android.app.Activity.onCreate(Activity.java:902)  
at android.support.v4.app.BaseFragmentActivityDonut.onCreate(BaseFragmentActivityDonut.java:41)  
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:315)  
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:85)  
at domainName.com.bubbletranslate.activity.PreferenceActivity.onCreate(PreferenceActivity.java:17)  
at android.app.Activity.performCreate(Activity.java:5231)  
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3738)  
at android.app.ActivityThread.access$900(ActivityThread.java:135)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:136)  
at android.app.ActivityThread.main(ActivityThread.java:5017)  
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:515)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  
at dalvik.system.NativeStart.main(Native Method)  

?どうすれば正しい方法で解決できますか?

アドバイスをいただき、ありがとうございます。

+0

私はあなたがあなたの質問を編集して、全体のJavaスタックを投稿することをお勧めしますトレース。最後のコードリストは2つの文字列配列を示しています。あなたは1つしか使用せず、 'android:entryValues'を持っていません。 – CommonsWare

答えて

0

ListPreferencean android:entryValues attributeを追加してください。

+0

私はandroid:entryValues = "@ array/translation_type_values"を追加しました残念ながら同じ結果.. – redrom

+0

@redrom:元のクラッシュは、原因:java.lang.NullPointerException from android.content.res.AssetManager.getResourceTextArray AssetManager.java:215) 'を選択します。元のコードでは、 'android:entries'または' android:entryValues'を読み込もうとしていました。変更されたコードからスタックトレースをチェックし、同じ 'NullPointerException'を取得しているかどうかを確認することができます。 – CommonsWare

0

私はこのように、単純な配列の値に文字列の配列を変えることによってそれを解決:値については

<resources> 
    <string-array name="translation_type_items"> 
     <item>floating_window</item> 
     <item>notification</item> 
     <item>toast_message</item> 
    </string-array> 
    <array name="translation_type_values"> 
     <item>@string/floating_window</item> 
     <item>@string/notification</item> 
     <item>@string/toast_message</item> 
    </array> 
</resources> 

android:entries="@array/translation_type_values" 
関連する問題