Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我点击手机上的首选项标题时,应用程序崩溃_Java_Android_Android Fragments_Preferenceactivity_Preferencefragment - Fatal编程技术网

Java 当我点击手机上的首选项标题时,应用程序崩溃

Java 当我点击手机上的首选项标题时,应用程序崩溃,java,android,android-fragments,preferenceactivity,preferencefragment,Java,Android,Android Fragments,Preferenceactivity,Preferencefragment,我正在进行简单设置活动。我正在使用首选项标题、首选项片段、多个首选项屏幕文件和首选项活动。我希望它的外观和工作方式与android系统设置类似。 在平板电脑上一切正常。设置活动显示两个片段,一个带有标题,另一个带有首选项屏幕。 当我在手机上打开应用程序时,它只显示一个带有标题的片段,这正是我想要的,但当我点击某个东西时,应用程序崩溃了。我想让它完全像安卓系统设置一样工作,这意味着当我点击手机上的某个东西时,它会用首选屏幕替换片段。 谢谢你的帮助 这是我的密码: headers.xml <p

我正在进行简单设置活动。我正在使用首选项标题、首选项片段、多个首选项屏幕文件和首选项活动。我希望它的外观和工作方式与android系统设置类似。 在平板电脑上一切正常。设置活动显示两个片段,一个带有标题,另一个带有首选项屏幕。 当我在手机上打开应用程序时,它只显示一个带有标题的片段,这正是我想要的,但当我点击某个东西时,应用程序崩溃了。我想让它完全像安卓系统设置一样工作,这意味着当我点击手机上的某个东西时,它会用首选屏幕替换片段。 谢谢你的帮助

这是我的密码:

headers.xml

<preference-headers
    xmlns:android="http://schemas.android.com/apk/res/android">

    <header
        android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF"
        android:title="@string/settings_update"
        android:summary="@string/settings_updateSummary" >
    </header>
    <header
        android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF"
        android:title="@string/settings_display"
        android:summary="@string/settings_displaySummary">
    </header>
    <header
        android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF"
        android:title="@string/settings_notify">
    </header>

</preference-headers>

您之所以会出现此错误,是因为您的首选项活动对首选项标题类型设置错误,正确的做法是:

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

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

@Override
protected boolean isValidFragment(String fragmentName) {
    return (Prefs1.class.getName().equals(fragmentName)
            || Prefs2.class.getName().equals(fragmentName)
            || Prefs3.class.getName().equals(fragmentName));
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
public void onBuildHeaders(列表目标){
loadHeadersFromResource(R.xml.preference_头,目标);
setContentView(R.layout.preference);
}
@凌驾
受保护的布尔值isValidFragment(字符串碎片名称){
返回(Prefs1.class.getName().equals(fragmentName)
||Prefs2.class.getName().equals(fragmentName)
||Prefs3.class.getName().equals(fragmentName));
}

这里的Prefs“number”是首选项的标题,比如您的PrefsF。

您可以发布日志吗?
public class PrefsF extends PreferenceFragment{
    @Override
    public void onCreate(Bundle savedInstanceState) {

        int preferenceFile_toLoad=-1;
        String settings = getArguments().getString("settings");
        if (Constants.SETTING_UPDATE.equals(settings)) {
            // Load the preferences from an XML resource
            preferenceFile_toLoad= R.xml.preference_update;
        }else if (Constants.SETTING_DISPLAY.equals(settings)) {
            // Load the preferences from an XML resource
            preferenceFile_toLoad=R.xml.preference_display;
        }else if (Constants.SETTING_NOTIFY.equals(settings)) {
            // Load the preferences from an XML resource
            preferenceFile_toLoad=R.xml.preference_notify;
        }

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

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

@Override
protected boolean isValidFragment(String fragmentName) {
    return (Prefs1.class.getName().equals(fragmentName)
            || Prefs2.class.getName().equals(fragmentName)
            || Prefs3.class.getName().equals(fragmentName));
}