2013-03-08 8 views
8

Ho un elenco di stringhe (memorizzate in un database, non come risorsa) e
Desidero consentire all'utente di modificare questo elenco. Questo è abbastanza facile da fare con un normale Activity,
ma in questa applicazione tale elenco dovrebbe essere parte di user preferences.
In pratica si tratta di un elenco di frasi che l'utente desidera avere disponibili per l'uso.Avviare un'attività da una schermata Preference

Dal momento che vorrei fornire una coerente interfaccia utente, voglio aggiungere questo alla schermata preferenza:

<PreferenceScreen xmlns:android="..."> 
    <!-- Some other categories and preferences here --> 
    <PreferenceScreen android:key="PREF_PDT" 
         android:title="Predefined Texts" 
         android:summary="View and edit the list of predefined texts"> 
    </PreferenceScreen> 
    <!-- Some other categories and preferences here --> 
<PreferenceScreen> 

Ora diciamo che ho una completamente funzionante Activity che mi permette di modificare i testi nel database ,
cosa posso fare in modo che quando l'utente tocca la voce "PREF_PDT" viene utilizzato lo Activity?

Lo prendo Dovrò apportare alcune modifiche allo Activity
o creare una vista Preferenze personalizzata di qualche tipo?

Aggiornamento: Quindi, solo per essere chiari, non ho bisogno dello schermo 'lista' di agganciare nelle impostazioni,
ho solo bisogno di dare agli utenti l'impressione che essi sono ancora in parte le preferenze dell'applicazione (senza rompere lo stack di navigazione, ovviamente). Altrimenti devono andare in un posto per modificare alcune impostazioni e andare in un altro posto per modificare i testi. Si aspettano di trovare tutto sotto 'settings'

Aggiornamento: Ho rinominato la domanda dalla 'schermata Preferenze personalizzate per modificare un elenco di elementi' come è chiaro ora che quello che sto cercando di fare è avviare un attività da un PreferenceScreen. La risposta di sh404 aiuta ma non riesco a trovare la sintassi corretta per fare riferimento all'attività che voglio luanch. Forse è monodroid specifico. (ActivityNotFoundException)

+0

Si potrebbe desiderare di guardare PreferenceFragments http: // sviluppatore .android.com/riferimento/android/preferenza/PreferenceFragment.html – Premsuraj

+0

Non sono del tutto sicuro di come questo mi aiuti – TimothyP

+0

Possibile duplicato di [Avvia nuova attività da PreferenceActivity] (http://stackoverflow.com/questions/7041292/launch-new-activity-from-preferenceactivity) – Flow

risposta

16

scrittura come questo:

<Preference 
    android:key="mykey" 
    android:title="TheTitle" 
    android:summary="summary here" > 
    <intent android:action="net.hasnath.android.MyActivity"/> 
</Preference> 

Se è necessario passare Extra Intent:

<Preference 
    android:key="mykey" 
    android:title="TheTitle" 
    android:summary="summary here" > 
    <intent android:action="net.hasnath.android.MyActivity"> 
     <extra android:name="extra_name" android:value="my_value" /> 
     <extra android:name="extra_2_name" android:value="my_value_2"/> 
    </intent> 
</Preference> 

successivo si dovrà dichiarare le attività nel AndroidManifest.xml
o puoi dichiarare l'intento nella schermata delle preferenze in questo modo:

<intent android:targetPackage="net.hasnath.android" 
     android:targetClass="net.hasnath.android.MyActivity"/> 

In questo modo non è necessario apportare modifiche a AndroidManifest.

+0

Questo è ovviamente quello che sto cercando, ma non riesco a ottenere la parte 'azione' giusta ... mi dice che non riesce a trovare l'attività, potrebbe essere sintassi Monodroid specifico, cercando in esso ora – TimothyP

+0

è necessario dichiarare l'attività in AndroidManifest .xml – sha256

+0

Ah ok ... guarderò quello, lascia che ti risponda su di esso – TimothyP

-1

Ho avuto lo stesso problema ma nessuna delle soluzioni che ho cercato su StackOverflow ha risolto la mia attività Eccezionale eccezione.

Ecco la soluzione di lavoro ho trovato da here:

<PreferenceScreen 
       android:title="@string/title_intent_preference" 
       android:summary="@string/summary_intent_preference"> 

      <intent android:action="your.action.string"/> 

</PreferenceScreen> 

impostare un filtro intento nella vostra attività all'interno manifest.xml

<activity ...> 
      <intent-filter> 
       <action android:name="your.action.string"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
</activity> 
Problemi correlati