2013-05-04 87 views
14

我在我的應用程序創建偏好活動,讓用戶啓動/停止背景閃屏音樂如下:替代addPreferencesFromResource其棄用

public class Prefs extends PreferenceActivity{ 

@SuppressWarnings("deprecation") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.prefs); 


    }  
} 

和XML文件夾中創建的prefs.xml:

<?xml version="1.0" encoding="utf-8" ?> 
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
     <CheckBoxPreference 
     android:title="splash music" 
     android:defaultValue="true" 
     android:key="checkbox" 
     android:summary="Plese remove music "/> 
    </PreferenceScreen> 

和驗證碼飛濺的活動:

public class Splash extends Activity{ 
    MediaPlayer ourSong; 
@Override 
protected void onCreate(Bundle Drandroid) { 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    // TODO Auto-generated method stub 
    super.onCreate(Drandroid); 
     setContentView(R.layout.splash); 

    ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound); 

    SharedPreferences getPrefs = 
       PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
    boolean music = getPrefs.getBoolean("checkbox", true); 
    if (music == true)  
    ourSong.start(); 

    Thread timer = new Thread(){ 
     public void run(){ 
      try{ 
       sleep(5000); } 
       catch (InterruptedException e){ 
       e.printStackTrace(); } 
       finally{ 
    Intent openTurkeyTrip = new Intent("com.android.dr.MENU"); 

     startActivity(openplanet); }}         
           }; 
     timer.start(); } 

@Override 
protected void onPause() { 
      // TODO Auto-generated method stub 
    super.onPause(); 
    ourSong.release(); 
    finish(); 
      } 
     } 

我怎麼能與其他CLAS解決問題S的不會被棄用也是我的應用程序將支持新老設備如下:

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

任何意見可以理解,謝謝。

+1

的可能重複[在一個PreferenceActivity而是使用「addPreferencesFromResource」怎麼樣?](http://stackoverflow.com/問題/ 682231 9/what-to-use-instead-of-addpreferences fromresource-in-a-preferenceactivity) – Mafro34 2013-11-27 12:23:44

+0

duplicate問題 – 2016-02-15 11:33:16

回答

38

PreferenceActivity未被棄用。

addPreferencesFromResource() on PreferenceActivityis已棄用。但是,如果您支持API等級10或更低,則別無選擇,只能使用它,至少在這些設備上使用它。

未棄用的方法是將PreferenceFragmentPreferenceActivity結合使用,如the PrefereceActivity documentation中所述。如果您的應用只支持API Level 11及更高版本,請使用它。如果您的應用支持老設備,或者:

  • 使用addPreferencesFromResource()所有的時間,因爲它仍然有效,直到你放棄支持舊版本,或

  • 只對舊設備使用addPreferencesFromResource() (通過檢查Build.VERSION.SDK_INT),並依靠新的基於片段的系統上較新的設備

+0

我的應用程序將支持舊設備和新設備(發佈編輯),如何讓它適用於您提到的: addPreferencesFromResource()只在較舊的設備上(通過檢查Build.VERSION.SDK_INT),並依靠代碼中較新設備上基於片段的新系統,謝謝 – 2013-05-04 13:13:35

+1

@AndroidStack:這超出了可以合理描述的範圍在StackOverflow答案。以下是一些演示結果的示例項目:https://github.com/commonsguy/cw-omnibus/tree/master/Prefs/FragmentsBC https://github.com/commonsguy/cw-omnibus/tree/master/Prefs/SingleHeader https://github.com/commonsguy/cw-omnibus/tree/master/Prefs/SingleHeader2這就是說,除非你是一位相當有經驗的Android開發人員,否則我會建議你直接使用'addPreferencesFromResource()'直到你放棄對舊設備的支持。 – CommonsWare 2013-05-04 13:23:17

+0

非常感謝您的親愛的 – 2013-05-04 13:42:54

相關問題