2013-05-04 63 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

相关问题