【问题标题】:Alternative to addPreferencesFromResource as its deprecatedaddPreferencesFromResource 的替代品已弃用
【发布时间】:2013-04-28 18:38:37
【问题描述】:

我在我的应用程序上创建了 Preference 活动,以允许用户按如下方式启动/停止背景启动屏幕音乐:

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();
          } 
       }

我如何使用其他未弃用的类来解决它,我的应用程序将支持以下新旧设备:

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

任何建议将不胜感激,谢谢。

【问题讨论】:

标签: android sharedpreferences splash-screen


【解决方案1】:

PreferenceActivity 未被弃用。

addPreferencesFromResource() on PreferenceActivity 已弃用。但是,如果您支持 API 级别 10 或更低,您别无选择,只能使用它,至少在那些设备上是这样。

不推荐使用的方法是将PreferenceFragmentPreferenceActivity 结合使用,如the PrefereceActivity documentation 中所述。如果您的应用仅支持 API 级别 11 及更高级别,请使用它。如果您的应用支持旧设备,则:

  • 一直使用addPreferencesFromResource(),因为它仍然有效,直到您放弃对旧版本的支持,或者

  • 仅在旧设备上使用addPreferencesFromResource()(通过检查Build.VERSION.SDK_INT),并在新设备上依赖基于片段的新系统

【讨论】:

猜你喜欢
  • 2016-05-25
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多