Альтернатива 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" />
любой совет будет оценен, спасибо.
Ответы
Ответ 1
PreferenceActivity
не устарел.
addPreferencesFromResource()
on PreferenceActivity
устарел. Однако, если вы поддерживаете API-уровень 10 или ниже, у вас нет выбора, кроме как использовать его, по крайней мере, на этих устройствах.
Не устаревший подход заключается в использовании PreferenceFragment
в сочетании с PreferenceActivity
, как описано в документации PrefereceActivity
. Если ваше приложение поддерживает только API уровня 11 и выше, просто используйте это. Если ваше приложение поддерживает устаревшие устройства, выполните следующие действия:
-
Используйте addPreferencesFromResource()
все время, пока оно все еще работает, до тех пор, пока вы не отпустите поддержку старых версий, или
-
Используйте addPreferencesFromResource()
только на старых устройствах (путем проверки Build.VERSION.SDK_INT
) и полагайтесь на новую основанную на фрагментах систему на более новых устройствах