2013-05-04 13 views
14

creo attività Preferenza sulla mia app per consentire all'utente di start/stop sfondo Splash Screen musica come segue:Alternativa a addPreferencesFromResource come deprecato

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


    }  
} 

e all'interno della cartella xml creare 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> 

e questo codice per l'attività spruzzi

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

come posso risolverlo con altri clas s che non è deprecato anche la mia app supporterà i dispositivi vecchi e nuovi, come di seguito:

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

qualsiasi consiglio sarà apprezzato, grazie.

+1

possibile duplicato di [Cosa da usare al posto di "addPreferencesFromResource" in un PreferenceActivity?] (http://stackoverflow.com/ domande/682231 9/what-to-use-invece-of-addpreferencesfromresource-in-a-preferenceactivity) – Mafro34

+0

duplicato Domanda –

risposta

38

PreferenceActivity non è deprecato.

addPreferencesFromResource() su PreferenceActivityè deprecato. Tuttavia, se stai supportando l'API di livello 10 o inferiore, non hai altra scelta che usarlo, almeno su quei dispositivi.

L'approccio non deprecato è quello di utilizzare PreferenceFragment in combinazione con PreferenceActivity, come descritto in the PrefereceActivity documentation. Se la tua app supporta solo le API di livello 11 e superiori, usale. Se la vostra applicazione sta sostenendo dispositivi più vecchi, sia:

  • Usa addPreferencesFromResource() tutto il tempo, come funziona ancora, fino a cadere il supporto per le versioni più vecchie, o

  • Usa addPreferencesFromResource() solo sui dispositivi più vecchi (controllando Build.VERSION.SDK_INT), e si basano sul nuovo sistema frammento basati su dispositivi più recenti

+0

la mia app supporterà sia vecchi e nuovi dispositivi (post modificato), come farlo funzionare per entrambi come si cita: Usa addPreferencesFromResource() solo sui dispositivi più vecchi (controllando Build.VERSION.SDK_INT) e affidarsi al nuovo sistema basato su frammenti sui nuovi dispositivi nel codice, grazie, –

+1

@AndroidStack: Questo va un po 'oltre ciò che può essere ragionevolmente coperto in una risposta StackOverflow. Ecco alcuni esempi di progetti che dimostrano i risultati: 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 Detto questo, a meno che tu non sia uno sviluppatore Android abbastanza esperto, ti consiglio di usare solo "addPreferencesFromResource()" finché non rilasciare il supporto per i dispositivi più vecchi. – CommonsWare

+0

grazie mille mio caro –