Java 在Android中使用设置时出现运行时异常(我正在学习udacity Android开发者课程)
我是android新手,学习Udacity android开发者课程。 我在第三章,他们教你如何在你的应用程序中添加设置。我已经从android studio添加了设置活动。当我点击设置菜单时,我的应用程序崩溃了。 这是我的pref_general.xml文件Java 在Android中使用设置时出现运行时异常(我正在学习udacity Android开发者课程),java,android,android-fragments,android-activity,Java,Android,Android Fragments,Android Activity,我是android新手,学习Udacity android开发者课程。 我在第三章,他们教你如何在你的应用程序中添加设置。我已经从android studio添加了设置活动。当我点击设置菜单时,我的应用程序崩溃了。 这是我的pref_general.xml文件 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!-- NOTE: EditTextPreference a
<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" />
当我点击设置菜单时,出现以下异常
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)
有什么帮助吗?抱歉,如果这是非常幼稚的事情我能够解决这个问题。
我正在更改SettingActivity的OnCreate,而不是更改SettingFragment的OnCreate,它是SettingActivity的静态私有类。@mayank agrawal 他的意思是,这些更改将在扩展PreferenceFragment的类中完成。i、 e您必须扩展PreferenceFragment 虽然代码在代码中有很好的解释性,但我在这里只是想提一下他的意思(在代码中添加注释) 如果您的应用程序支持API 10或更低版本,则必须使用首选项活动。不过,您也可以在新API上使用这种不推荐的方式。这是给初学者的建议
(我也在学习。因此,如果任何专家发现任何错误,请让我知道。)Cna您可以分享一些例子吗?
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)
public class PreferenceWithHeaders extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
//static class extending PreferenceFragment
public static class Prefs1Fragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager.setDefaultValues(getActivity(),
R.xml.advanced_preferences, false);
// Here's where you've to load the preferences from an XML resource
addPreferencesFromResource(R.xml.fragmented_preferences);
}
}
private void private void bindPreferenceSummaryToValue(Preference preference) {
...
}
}