Come faccio a creare una preferenza personalizzata che utilizza un'attività esistente che restituisce un risultato?

StackOverflow https://stackoverflow.com/questions/4361520

Domanda

La classe Business permette l'intenzione di impostare, ad avere una preferenza attivare un'altra attività quando si fa clic, ma sono in grado di trovare un modo per gestire il risultato da un'attività utilizzando questo metodo. C'è anche il DialogPreference dove posso fornire una visualizzazione personalizzata, ma non hanno accesso diretto alla vista che voglio usare, soltanto un'attività.

Scavando ulteriormente un po ', sembra che il RingtonePreference utilizza alcuni metodi interni del pacchetto sul PreferenceManager di ricevere i risultati di un iniziato sotto-attività, ma in quanto questi sono pacchetto interno non sono in grado di fare lo stesso.

C'è un altro modo di gestire una preferenza personalizzato con un'attività che restituisce un risultato (in cui il risultato è quello di essere salvato come il valore della preferenza)?

È stato utile?

Soluzione

Inoltre ho notato PreferenceActivity non restituisce onActivityResult. Detto questo, c'è un motivo per il vostro subattività non poteva salvare la preferenza diretta? Se è necessario controllare il valore di esso, si potrebbe verificare che al onResume della vostra PreferenceActivity come una soluzione ..

//SubActivity onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button btn = (Button) findViewById(R.id.Button01);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            SharedPreferences prefs = getSharedPreferences(TestPreferenceActivity.PREFS_FILE, MODE_WORLD_READABLE);
            prefs.edit().putString("mykey", "someValue").commit();
            finish();
        }});
}

//PreferenceActivity onResume
@Override
protected void onResume() {
    Log.d(TAG, "Preferences Resumed");
    //Check for new Preference Values
    SharedPreferences prefs = getSharedPreferences(PREFS_FILE, MODE_WORLD_READABLE);
    String value = prefs.getString("mykey", "defValue");
    Log.d(TAG, "Current value is: " + value);
    super.onResume();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top