2009-12-29 29 views
23

La pregunta es bastante simple. Pero quiero saber dónde exactamente hacemos nuestras referencias a los elementos de la GUI? Como en el que es el mejor lugar para definir:¿Cómo obtener texto de EditText?

final EditText edit = (EditText) findViewById(R.id.text_xyz); 
edit.getText().toString(); 

Cuando lo intento hacer en el interior del defecto onCreate() consigo valores nulos. Por lo tanto, para obtener la mejor práctica, ¿recomienda una clase separada para referir estos elementos de la GUI ya definidos en main.xml? ¿Desde aquí podemos llamar a varios métodos de estos elementos como gettext o settext?

+2

'edit.getText(). ToString()' – luckylukein

Respuesta

17

Bueno, depende de sus necesidades. Muy a menudo guardo mis referencias a widgets en actividad (como campos de clase) y los configuro en el método onCreate. Creo que es una buena idea
Probablemente la razón de sus nulos es que está tratando de llamar al findViewById() antes de configurar contentView() en su método onCreate() - por favor verifique eso.

13

Si lo hace antes de la llamada al método setContentView(), los valores serán nulos.

Esto dará como resultado nulo:

super.onCreate(savedInstanceState); 

Button btn = (Button)findViewById(R.id.btnAddContacts); 
String text = (String) btn.getText(); 

setContentView(R.layout.main_contacts); 

mientras que esto va a funcionar muy bien:

super.onCreate(savedInstanceState); 
setContentView(R.layout.main_contacts); 

Button btn = (Button)findViewById(R.id.btnAddContacts); 
String text = (String) btn.getText(); 
1
String fname = ((EditText)findViewById(R.id.txtFirstName)).getText().toString(); 
String lname = ((EditText)findViewById(R.id.txtLastName)).getText().toString(); 
((EditText)findViewById(R.id.txtFullName)).setText(fname + " "+lname); 
23

La solución más rápida a su problema que creo es que simplemente son soportes que faltan en su getText. Simplemente agregue () a edit.getText().toString() y eso debería resolverlo

3

Coloque lo siguiente después del método setContentView().

final EditText edit = (EditText) findViewById(R.id.Your_Edit_ID); 
String emailString = (String) edit.getText().toString(); 
Log.d("email",emailString); 
Cuestiones relacionadas