Альтернатива addPreferencesFromResource как устаревшая - программирование
Подтвердить что ты не робот

Альтернатива addPreferencesFromResource как устаревшая

Я создаю функцию 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" />

любой совет будет оценен, спасибо.

4b9b3361

Ответ 1

PreferenceActivity не устарел.

addPreferencesFromResource() on PreferenceActivity устарел. Однако, если вы поддерживаете API-уровень 10 или ниже, у вас нет выбора, кроме как использовать его, по крайней мере, на этих устройствах.

Не устаревший подход заключается в использовании PreferenceFragment в сочетании с PreferenceActivity, как описано в документации PrefereceActivity. Если ваше приложение поддерживает только API уровня 11 и выше, просто используйте это. Если ваше приложение поддерживает устаревшие устройства, выполните следующие действия:

  • Используйте addPreferencesFromResource() все время, пока оно все еще работает, до тех пор, пока вы не отпустите поддержку старых версий, или

  • Используйте addPreferencesFromResource() только на старых устройствах (путем проверки Build.VERSION.SDK_INT) и полагайтесь на новую основанную на фрагментах систему на более новых устройствах