2

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

但我仍然不能得到的代码工作,并希望得到一些帮助。我无法获得: “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> 
+0

是它解决了吗?我有同样的问题 – Lion789 2013-12-04 03:46:18

回答

0

删除进口android.R 它会工作

+0

通常它的工作,但这一次它不会 - 我有同样的问题。 – 2014-12-12 06:16:36

-1

@SuppressWarnings("deprecation")之前OnCreate方法。

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 */ 
} 
相关问题