2010-12-05 69 views
0

La classe Préférence permet de définir une intention pour qu'une préférence active une autre activité lorsqu'on clique dessus, mais je n'arrive pas à trouver un moyen de gérer le résultat d'une activité utilisant cette méthode. Il y a aussi le DialogPreference où je peux fournir une vue personnalisée, mais je n'ai pas d'accès direct à la vue que je veux utiliser, seulement une activité. En creusant un peu plus loin, on dirait que le RingtonePreference utilise quelques méthodes internes de paquets sur PreferenceManager pour recevoir les résultats d'une sous-activité commencée, mais comme ce sont des paquets internes, je ne peux pas faire la même chose.Comment créer une préférence personnalisée qui utilise une activité existante qui renvoie un résultat?

Existe-t-il une autre façon de gérer une préférence personnalisée avec une activité qui renvoie un résultat (où le résultat doit être enregistré en tant que valeur de la préférence)?

Répondre

2

J'ai également remarqué que PreferenceActivity ne retourne pas onActivityResult. Cela étant dit, y a-t-il une raison pour que votre sous-activité ne puisse pas enregistrer la préférence directement? Si vous devez vérifier la valeur de celui-ci, vous pouvez le vérifier à onResume de votre PreferenceActivity comme solution de contournement ..

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

Idéalement, je voudrais être en mesure de réutiliser une activité pour la sélection d'un périphérique Bluetooth et utiliser son résultat comme la valeur de préférence. Je voudrais également avoir une préférence réutilisable qui pourrait être utilisée pour un ou plusieurs périphériques Bluetooth configurés à partir de XML sans avoir à changer l'hôte PreferenceActivity. Le plus proche que je peux obtenir à ceci actuellement est d'avoir une préférence qui commence une activité qui commence l'autre activité et enregistre son résultat à une préférence quand elle se termine, mais il serait bon d'éviter cette activité supplémentaire tout à fait. – SoftMemes

+0

Au moins c'est une bonne idée pour moi. –