Lanciare nuove attività da PreferenceActivity

Buon giorno, amici. Ho una PreferenceActivity, è riempito dal file XML. Quando premiamo un elemento, dobbiamo lanciare nuove attività. Come farlo? Cosa devo scrivere in file XML o nella class Java?

  • Dove posso mettere setOnClickListener in un Adattatore RecyclerView
  • Come contare il numero di record in sqlite in Android
  • Utilizzo della camera nell'applicazione Phonegap con solo input HTML, senza API della camera
  • Manca la function di visualizzazione di Kotlin View?
  • come memorizzare un valore temporale nel database SQLite in Android?
  • Come get l'image del profilo utente con l'Unity SDK di Facebook?
  • L'utilizzo di DiskLruCache in android 4.0 non prevede il metodo openCache
  • BLE 4.0 per get i dati di trasmissione dal dispositivo al telefono
  • Ottenere l'errore "Imansible aprire database" quando si copia un database sqlite da asset In Android 4.2
  • Android: modificare in modo programmato l'etichetta dell'applicazione?
  • xmpp facebook non submit messaggi
  • iccp: non riconosce il profilo sRGB noto che è stato modificato
  • 5 Solutions collect form web for “Lanciare nuove attività da PreferenceActivity”

    Dopo aver aggiunto le preferenze utilizzando

    addPreferencesFromResource(R.xml.preferences); 

    trova la tua preferenza che desideri impostare suClick utilizzando

     findPreference("foo_bar_pref"); 

    e definirlo col casting come

     Preference fooBarPref = (Preference) findPreference("foo_bar_pref"); 

    Quindi è ansible impostare facilmente il suo onClick utilizzando

     fooBarPref.setOnPreferenceClickListener (new OnPreferenceClickListener()){...} 

    Puoi avviare la tua nuova attività (utilizzando un intento) all'interno di quell'elenco.

    Dato che state usando le preferenze di xml potete aggiungere il codice direttamente nel xml:

     <Preference android:title="Some Title" android:summary="Some Description"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.package.name" android:targetClass="com.package.name.ActivityName" /> </Preference> 

    Questo è un bel tutorial per aggiungere preferenze dynamicmente … in seguito devi personalizzare il proprio modo.

    In XMl:

     <Preference android:key="key" android:title="See Android Market"></Preference> 

    Nella class Java:

     Preferences preferences=findPreference("key"); preferences.setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse("https://market.android.com/"))); 

    O

     import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.DialogPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.widget.LinearLayout; import android.widget.ListView; public class SettingsActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* Some initializations */ LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); ListView listView = new ListView(this); listView.setId(android.R.id.list); listView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT, 1)); layout.addView(listView); this.setContentView(layout); /* Preferences time! (we build the preferences) */ Preference version = getPreference("My School Manager", "Version 2.0",null); Preference author = getPreference("Author", "Balu", null); Preference marketLink = getPreference("Android market","View all my apps :)",new Intent(Intent.ACTION_VIEW, Uri.parse("http://market.android.com/"))); CheckBoxPreference check = new CheckBoxPreference(this); check.setTitle("Checkbox"); check.setSummary("Example of checkbox"); DialogPreference license = new MyDialogPreference(this, "License","This is the license for...bla bla"); /* Now we add the preferences to the preference screen */ PreferenceScreen preferenceScreen = this.getPreferenceManager() .createPreferenceScreen(this); addPreferenceCategory(preferenceScreen, "Preferences Tutorial",version, author, marketLink, check, license); this.setPreferenceScreen(preferenceScreen); } private boolean addPreferenceCategory(PreferenceScreen preferenceScreen, String titleCategory, Preference... preferences) { boolean addPreference = false; for (Preference preference : preferences) { if (preference != null) addPreference = true; } if (addPreference) { PreferenceCategory preferenceCategory = new PreferenceCategory(this); preferenceCategory.setTitle(titleCategory); preferenceScreen.addPreference(preferenceCategory); for (Preference preference : preferences) { if (preference != null) preferenceCategory.addPreference(preference); } return true; } else return false; } private Preference getPreference(String title, String summary, Intent intent) { Preference pref = new Preference(this); pref.setTitle(title); pref.setSummary(summary); if (intent != null) pref.setIntent(intent); return pref; } public class MyDialogPreference extends DialogPreference { public MyDialogPreference(Context context, String title, String text) { super(context, null); this.setTitle(title); this.setDialogMessage(text); } } 

    }

    Gradel Builders, guardate qui!

    Se stai usando gradle over ant come strumento di costruzione e hai dichiarato applicationId all'interno di android .

     [build.gradle]: android { defaultConfig { ... applicationId "com.overriding.package.name" } ... } 

    Questo sovrascriverà qualunque valore dichiarato AndroidManifest.xml android:package AndroidManifest.xml come identificativo univoco dell'applicazione!

     [AndroidManifest.xml] <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.my.package"> <activity android:name=".settings.MyActivity"/> </manifest> 

    Il <intent> dovrà prendere in considerazione entrambi i nomi dei pacchetti!

     <Preference android:title="Some Title" android:summary="Some Description"> <intent android:targetPackage="com.overriding.package.name" android:targetClass="com.my.package.settings.MyActivity/> </Preference> 

    Devi registrare un onClickListener alla vista che desideri avviare l'attività. Quindi, all'interno di questo metodo, devi solo ricall l'attività con un intento. Qualcosa come questo:

     Intent intent = new Intent(this, ActivityToLaunch.class); // Start boardgame startActivity(intent); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.