2009-12-29 17 views
23

La domanda è abbastanza semplice. Ma voglio sapere dove esattamente facciamo i nostri riferimenti agli elementi gui? Come in cui è il posto migliore per definire:Come ottenere testo da EditText?

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

Quando provo ci fa all'interno del predefinito onCreate() ottengo valori nulli. Quindi, per la migliore pratica, si consiglia una classe separata per riferirsi a questi elementi di GUI già definiti in main.xml. Da qui possiamo chiamare vari metodi di questi elementi come gettext o settext?

+2

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

risposta

17

Bene, dipende dalle vostre esigenze. Molto spesso mantengo i miei riferimenti ai widget in attività (come campi di classe) - e li ho impostati nel metodo onCreate. Penso che sia una buona idea
Probabilmente il motivo del tuo nullo è che stai provando a chiamare findViewById() prima di impostare contentView() nel tuo metodo onCreate() - per favore controlla quello.

13

Se lo si sta eseguendo prima della chiamata al metodo setContentView(), i valori saranno nulli.

Questo si tradurrà in nulla:

super.onCreate(savedInstanceState); 

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

setContentView(R.layout.main_contacts); 

mentre questo funziona bene:

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 soluzione più rapida per il problema che credo è che semplicemente sono staffe mancanti nel getText. Basta aggiungere () a edit.getText().toString() e questo dovrebbe risolverlo

3

Inserire quanto segue dopo il metodo setContentView().

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