2010-10-12 7 views
13

Odio los cuadros de diálogo Aceptar/Cancelar, porque si mi aplicación le pregunta a alguien si realmente quiere hacer algo, nunca debería responder con "Cancelar".Mostrar Sí/No-Diálogo en lugar de Aceptar/Cancelar

Un pequeño ejemplo:

final AlertDialog.Builder b = new AlertDialog.Builder(this); 
b.setIcon(android.R.drawable.ic_dialog_alert); 
b.setTitle("Hello World"); 
b.setMessage("Did you do your homework?"); 
b.setPositiveButton(android.R.string.yes, null); 
b.setNegativeButton(android.R.string.no, null); 
b.show(); 

¿Es posible que las constantes "sí" y "no" en realidad significa "sí" y "no" con la localización? O hago esto explícitamente en mi recurso de cadena y no puedo usar constantes globales. Así que puedo reemplazar las dos líneas con:

b.setPositiveButton("Yes", null); 
b.setNegativeButton("No", null); 

(o los recursos en lugar de constantes aquí)

Sinceramente xZise

Respuesta

4

Una rápida búsqueda en Google revela que hay varias aplicaciones que hacen exactamente eso, incluida la propia aplicación My Tracks de Google, así que diría que es seguro usar android.R.string.yes.

Ejemplo: http://mytracks.googlecode.com/hg/MyTracks/src/com/google/android/apps/mytracks/io/backup/ExternalFileBackup.java?r=5ebff81c1c25d9600efb5d88eecc3e068ec22ae9

+0

Hmmm bien, pero, ¿dónde utiliza el ejemplo android.R.string.yes? Y no quiero saber si es "guardar", solo quiero saber cómo cambiar el nombre de los botones a Sí/No usando constantes así nombradas. O si tuviera que agregar los valores manualmente. No soy un hablante nativo de inglés, pero ¿es común usar Ok/Cancel-Dialogs en lugar de Yes/No-Dialogs? Para mí, suena desagradable responder "¿Has hecho tu tarea?" con "OK" o "Cancelar". Atentamente xZise – xZise

+0

Para mí, "hiciste tu tarea" suena feo :) Es "hiciste tu tarea". Simplemente busque "android.R.string.yes" en el enlace que publiqué. En realidad, cambió, revise este enlace aquí: http://mytracks.googlecode.com/hg/MyTracks/src/com/google/android/apps/mytracks/io/backup/ExternalFileBackup.java?r=5ebff81c1c25d9600efb5d88eecc3e068ec22ae9 – EboMike

+0

Y a Responde tu pregunta: tienes toda la razón, "Sí" y "No" serían nombres de botones mucho más apropiados, y harías lo correcto para cambiarlos. Windows incluso tiene MB_YESNO como una opción para sus cuadros de diálogo. Android no, pero tu código haría lo correcto. – EboMike

3

Lo que usted ha proporcionado debería funcionar. (Aparte, en inglés correcto su pregunta debería decir "¿Has hecho tu tarea? ¿Hiciste tu tarea?)

No creo que haya ningún estándar global de inglés con respecto a aceptar/cancelar y sí/no. Realmente depende del contexto. Hay ciertos contextos donde uno u otro tendrían más sentido. Creo que está bien usar sí/no si tiene más sentido para el tipo de cosas que está preguntando.

23

Sea consciente de que los contenidos de estos recursos de texto en inglés son realmente "OK" y "Cancelar", no Sí y No. Por lo tanto, si necesita Sí y No, debe usar sus propios recursos de cadenas. Consulte por ejemplo http://code.google.com/p/android/issues/detail?id=3713 y http://groups.google.com/group/android-developers/browse_thread/thread/30b589fa9aca185a

+0

si tengo un cuadro de diálogo con un mensaje algo así como _¿Deseas descargarlo_? Entonces _yes/no_ es mejor. No entiendo por qué los recursos de cadena internos 'android.R.string.no' y' android.R.string.cancel' ambos contienen la palabra _Cancel_ (no tiene ningún sentido) – user924

Cuestiones relacionadas