使用Android中的设置时出现运行时异常(我正在关注udacity Android Developer课程)

Pan*_*sal 7 java android android-fragments android-activity

我是Android的新手并且遵循Udacity Android开发人员课程来学习.我在第3章,他们教你如何在你的应用程序中添加设置.我已经从android studio添加了SettingActivity.当我点击设置菜单时,我的应用程序崩溃了.这是我的pref_general.xml文件

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

<!-- NOTE: EditTextPreference accepts EditText attributes. -->
<!-- NOTE: EditTextPreference's summary should be set to its value by the activity code. -->
<EditTextPreference
    android:key="@string/pref_location_key"
    android:defaultValue="@string/pref_location_default"
    android:maxLines="1"
    android:inputType="text"
    android:selectAllOnFocus="true"
    android:singleLine="true"
    android:title="@string/pref_location_label" />
Run Code Online (Sandbox Code Playgroud)

我在SettingActivity中进行了这些更改

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
addPreferencesFromResource(R.xml.pref_general);
bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_location_key)));}
Run Code Online (Sandbox Code Playgroud)

单击"设置"菜单时出现以下异常

Process: com.example.android.sunshine.app, PID: 10131
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.sunshine.app/com.example.android.sunshine.app.SettingsActivity}: java.lang.RuntimeException: Modern two-pane PreferenceActivity requires use of a PreferenceFragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

Caused by: java.lang.RuntimeException: Modern two-pane PreferenceActivity requires use of a PreferenceFragment
 at android.preference.PreferenceActivity.requirePreferenceManager(PreferenceActivity.java:1441)
 at android.preference.PreferenceActivity.addPreferencesFromResource(PreferenceActivity.java:1511)
 at com.example.android.sunshine.app.SettingsActivity.onCreate(SettingsActivity.java:124)
 at android.app.Activity.performCreate(Activity.java:6010)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413) 
 at android.app.ActivityThread.access$800(ActivityThread.java:155) 
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317) 
 at android.os.Handler.dispatchMessage(Handler.java:102) 
 at android.os.Looper.loop(Looper.java:135) 
 at android.app.ActivityThread.main(ActivityThread.java:5343) 
 at java.lang.reflect.Method.invoke(Native Method) 
 at java.lang.reflect.Method.invoke(Method.java:372) 
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Run Code Online (Sandbox Code Playgroud)

有帮助吗?对不起,如果它非常天真的事情

Pan*_*sal 4

我能够解决这个问题。
我正在更改我的SettingActivity 的OnCreate,而不是更改SettingFragment 的OnCreate,它是SettingActivity 的静态私有类。