addPreferencesFromResource

问题描述 投票:2回答:3

我知道这可能是重复的:What to use instead of "addPreferencesFromResource" in a PreferenceActivity?

但我仍然无法让代码工作,并会感谢一些帮助。我无法得到:“addPreferencesFromResource(R.xml.preferences);”上班。

即使它位于R.xml文件夹中,也不会解析首选项。

我按照上面这个字母的链接示例。

请帮忙!!

package com.example.oasisreference;

import android.R;
import android.R.xml;
//import android.annotation.TargetApi;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;

public class Prefs extends PreferenceActivity  {

@Override
protected void onCreate(final Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    getFragmentManager().beginTransaction().replace(android.R.id.content, new   MyPreferenceFragment()).commit();
}

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

}

}

Res.xml文件夹中的preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen 
xmlns:android="http://schemas.android.com/apk/res/android" >

<EditTextPreference
    android:title="User Name"
    android:key="name"
    android:summary="Enter your name"
    ></EditTextPreference>
<CheckBoxPreference
    android:title="Euro Currency"
    android:defaultValue="false"
    android:key="euro"
    android:summary="Check for Use Cost Calculator to be in Euros/Liters">
 </CheckBoxPreference>


</PreferenceScreen>

菜单。 XML

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


<item
    android:id="@+id/aboutUs"
    android:title="About the Author">
</item>
<item
    android:id="@+id/preferences"
    android:title="Preferences">
</item>
<item 
    android:id="@+id/exit"
    android:title="Exit">
</item>

</menu>
android android-preferences android-fragmentactivity preferenceactivity
3个回答
0
投票

删除导入android.R它会工作


0
投票

答案是,它实际上并没有被弃用....他们只是想让你使用preferenceFragments(见下文)

事实证明它是相同的例程名称,但它被实例化为preferenceFragment的一部分,它是一个不同的类。它没有被弃用。这很微妙,但开发人员网站上的示例从首选项片段中引用它。将已弃用的调用粘贴到preferenceFragment类中,并亲自查看弃用

在preferenceFragment类声明中:

package android.preference;

public abstract class PreferenceFragment extends android.app.Fragment {

// ...
    public void addPreferencesFromIntent(android.content.Intent intent) {
        /* compiled code */
    }
       
    public void addPreferencesFromResource(int preferencesResId) {
        /* compiled code */
    }
    // ...

而在另一个班级

package android.preference;

public abstract class PreferenceActivity extends android.app.ListActivity implements android.preference.PreferenceFragment.OnPreferenceStartFragmentCallback {

    /**
    * @deprecated
    */
@java.lang.Deprecated
public void addPreferencesFromResource(int preferencesResId) {
    /* compiled code */
}

-1
投票

@SuppressWarnings("deprecation")方法之前添加OnCreate

© www.soinside.com 2019 - 2024. All rights reserved.