2013-05-04 17 views
14
veraltet

I Preference Aktivität auf meine app erstellen Benutzer zu ermöglichen, Start/Stopp-Hintergrund Splash-Screen Musik wie folgt:Alternative zu addPreferencesFromResource als

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


    }  
} 

und innerhalb xml-Ordner erstellen 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> 

und dieser Code für splash Aktivität:

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

, wie ich es mit anderen cla lösen kann s, die nicht veraltet ist auch meine App unterstützt alte und neue Geräte wie folgt:

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

jeder Ratschlag wird geschätzt werden, danke.

+1

möglich Duplikat [Was in einem PreferenceActivity statt „addPreferencesFromResource“ zu benutzen?] (http://stackoverflow.com/ Fragen/682231 9/what-to-use-statt-of-addpreferencesfromresource-in-a-preferenceactivity) – Mafro34

+0

duplicate Frage –

Antwort

38

PreferenceActivity ist nicht veraltet.

addPreferencesFromResource() auf PreferenceActivityist veraltet. Wenn Sie API Level 10 oder niedriger unterstützen, haben Sie jedoch keine andere Wahl, als mindestens auf diesen Geräten zu verwenden.

Der nicht veraltete Ansatz ist die Verwendung PreferenceFragment in Verbindung mit PreferenceActivity, wie in the PrefereceActivity documentation beschrieben. Wenn Ihre App nur API Level 11 und höher unterstützt, verwenden Sie diese Option. Wenn Ihre App ältere Geräte unterstützt, entweder:

  • Verwenden addPreferencesFromResource() die ganze Zeit, wie es funktioniert immer noch, bis Sie die Unterstützung für die älteren Versionen fallen, oder

  • Verwenden addPreferencesFromResource() nur auf den älteren Geräten (von Build.VERSION.SDK_INT-Kontrolle) und stützen sich auf das neue Fragment-basierten System auf neueren Geräten

+0

meine App unterstützt sowohl alte als auch neue Geräte (Post bearbeitet), wie es funktioniert für beide, wie Sie erwähnen: Verwenden addPreferencesFromResource() nur auf den älteren Geräten (durch Überprüfung von Build.VERSION.SDK_INT), und verlassen sich auf das neue Fragment-basierte System auf neueren Geräten in Code, danke, danke –

+1

@AndroidStack: Das geht ein bisschen über das, was vernünftigerweise abgedeckt werden kann in einer StackOverflow-Antwort. Hier sind einige Beispielprojekte, die die Ergebnisse demonstrieren: 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 Abgesehen davon, dass Sie ein ziemlich erfahrener Android-Entwickler sind, würde ich Ihnen empfehlen, bis Sie "addPreferencesFromResource()" zu verwenden Drop-Unterstützung für ältere Geräte. – CommonsWare

+0

vielen Dank mein lieber –