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 */ 
}