Autore Topic: PreferenceFragment in un PreferenceScreen  (Letto 753 volte)

Offline elegos

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    Giacomo Furlan
  • Sistema operativo:
    Mac OS X
PreferenceFragment in un PreferenceScreen
« il: 11 Luglio 2012, 17:56:17 CEST »
0
Ciao a tutti!

Sto scrivendo un'applicazione, in particolare il menu delle impostazioni, il tutto tramite i frammenti. Attualmente il frammento delle impostazioni richiama un layout di tipo PreferenceScreen, il quale ha al suo interno delle PreferenceCategory e vari oggetti.

Uno di questi oggetti è una PreferenceScreen, così definita:

Codice (XML): [Seleziona]
        <PreferenceScreen
           android:fragment="com.example.app.Fragments.Donate"
           android:title="@string/pref_donate"
           android:summary="@string/pref_donate_desc" />

Come vedete ho impostato l'attributo android:fragment, il quale dovrebbe, in linea teorica, richiamare il frammento "com.example.app.Fragments.Donate", ma qui si ferma il codice. Infatti nell'onCreate del frammento ho messo un Log.d, ma non viene mai eseguito, né il logcat segna alcun problema. La cosa pessima è che anche se metto un percorso inesistente (come ad esempio "io.non.esisto"), Android continua a non dar nessun problema, proprio come se stesse ignorando l'attributo. Per ciò ho provato anche a ripulire l'ambiente di lavoro e ri-compilare, senza nessun risultato. Infine il percorso del frammento, ho controllato più volte, è corretto.

Il frammento delle impostazioni viene chiamato tramite la seguente istruzione:
Codice (Java): [Seleziona]
                getFragmentManager().beginTransaction()
                                .replace(R.id.fragment_content, changeFrag)
                                .addToBackStack(null)
                                .commit();

Mentre il layout viene caricato in questa maniera:
Codice (Java): [Seleziona]
public class Preferences extends PreferenceFragment {
       
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
               
                addPreferencesFromResource(R.xml.preferences);
        }

}

Dove sbaglio?

Potrei mettere anche un handler dell'onClick delle impostazioni per questo caso speciale, ma preferirei fare le cose il più standard possibile (visto che esiste l'attributo android:fragment, non capisco perché non dovrei non utilizzarlo).

Grazie  :-)
« Ultima modifica: 11 Luglio 2012, 18:01:57 CEST da elegos »

Offline appmax

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:PreferenceFragment in un PreferenceScreen
« Risposta #1 il: 06 Settembre 2012, 17:25:37 CEST »
0
travato la soluzione?

Offline elegos

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    Giacomo Furlan
  • Sistema operativo:
    Mac OS X
Re:PreferenceFragment in un PreferenceScreen
« Risposta #2 il: 06 Settembre 2012, 17:53:22 CEST »
0
No, non ho trovato un soluzione "pulita", nel senso che alla fine ho creato il handler onClick delle impostazioni. Mi piacerebbe però sapere se fosse possibile il metodo diretto tramite layout.
« Ultima modifica: 06 Settembre 2012, 18:27:00 CEST da elegos »

Offline appmax

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:PreferenceFragment in un PreferenceScreen
« Risposta #3 il: 06 Settembre 2012, 18:17:12 CEST »
0
non lo so nemmeno io. x quello ero curioso dell'eventuale positiva risposta. saluti. ;-)