2010-09-11 4 views
3

Dans mon application, je voudrais afficher un avertissement lors de l'utilisation d'une certaine préférence dans mon application. J'ai essayé d'utiliser le PreferenceActivity.onPreferenceTreeClick et le onPreferenceClickListener, mais aucun ne semble fonctionner. J'ai le dernier exemple ci-dessous. Quelqu'un pourrait-il nous éclairer?Override cliquez sur android prefenceactivity

@Override 
protected void onCreate(Bundle saved) { 

    super.onCreate(saved); 
    addPreferencesFromResource(R.xml.prefs); 
    Preference gridview = findPreference("fcngrid"); 
    gridview.setOnPreferenceClickListener(overrider); 

} 

public OnPreferenceClickListener overrider = new OnPreferenceClickListener() { 

    public boolean onPreferenceClick(Preference pref) { 

     if (pref.getTitle() == "Default as grid") 
      showDialog(0); 

     return false; 
    } 

}; 

protected Dialog onCreateDialog(int id) { 

    AlertDialog.Builder b = new AlertDialog.Builder(this); 
    b.setTitle("Warning") 
    .setMessage("Unfortunately, this feature is currently unstable, and will be" + 
      " fixed soon.") 
    .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 

      dialog.cancel(); 

     } 

    }); 

    return b.create(); 

} 
+0

Veuillez définir "mais rien ne semble fonctionner". – CommonsWare

+0

Désolé, aucune des deux méthodes ne montre le dialogue sur showDialog (0). C'est très étrange, j'ai utilisé le débogueur et il arrive à l'instruction if; même si je copie et colle le titre de préférence (ou la clé que j'utilise maintenant) à partir d'un point d'arrêt, il ne dit toujours pas que l'instruction est vraie ... le débogueur montre que cela devrait marcher mais ce n'est pas le cas. Je dois souligner que si je commente la déclaration if cela fonctionne bien, juste sur chaque élément. –

Répondre

4

Ne vous inquiétez pas, l'utilisation de pref.getTitle().equals("Default as grid") a bien fonctionné.

+2

if (pref.getTitle() == "Valeur par défaut") showDialog (0); Mhhhh, peut-être que celui-ci est meilleur: if (pref == gridview) showDialog (0); –

+0

Oh yer, je n'y ai pas pensé! Probablement une bien meilleure façon de le faire. Merci! –

Questions connexes