web-dev-qa-db-ja.com

非推奨の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();
          } 
       }

廃止されていない他のクラスでそれを解決するにはどうすればよいですか?また、私のアプリは以下のように古いデバイスと新しいデバイスをサポートします:

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

どんなアドバイスでも感謝します、ありがとう。

14
Android Stack

PreferenceActivityは非推奨ではありません。

addPreferencesFromResource() on PreferenceActivityisは非推奨です。ただし、APIレベル10以下をサポートしている場合は、少なくともそれらのデバイスで使用するしかありません。

the PreferenceFragment documentation で説明されているように、非推奨ではない方法では、PreferenceActivityPrefereceActivityと組み合わせて使用​​します。アプリがAPIレベル11以上のみをサポートしている場合は、それを使用してください。アプリが古いデバイスをサポートしている場合は、次のいずれかを行います。

  • 古いバージョンのサポートを終了するまで、引き続き機能するため、常にaddPreferencesFromResource()を使用してください。

  • 古いデバイスでのみaddPreferencesFromResource()を使用します(Build.VERSION.SDK_INT)、および新しいデバイス上の新しいフラグメントベースのシステムに依存

38
CommonsWare