addPreferencesFromResource

时间:2013-04-05 02:04:27

标签: android android-preferences android-fragmentactivity preferenceactivity

我知道这可能与以下内容重复: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>

menu.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>

3 个答案:

答案 0 :(得分:0)

删除导入android.R 它会起作用

答案 1 :(得分: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 */
}

答案 2 :(得分:-1)

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