2009-12-29 15 views
23

La question est assez simple. Mais je veux savoir où exactement faisons-nous nos références aux éléments gui? Comme dans lequel est le meilleur endroit pour définir:Comment obtenir du texte de EditText?

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

Quand j'essayer de faire l'intérieur par défaut onCreate() Je reçois des valeurs nulles. Donc, pour une meilleure pratique, recommandez-vous une classe séparée pour référencer ces éléments gui déjà définis dans main.xml. D'ici nous pouvons appeler différentes méthodes de ces éléments comme gettext ou settext?

+2

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

Répondre

17

Eh bien, cela dépend de vos besoins. Très souvent, je garde mes références aux widgets en activité (en tant que champs de classe) - et les place dans la méthode onCreate. Je pense que c'est une bonne idée
Probablement la raison de vos nulls est que vous essayez d'appeler findViewById() avant de définir contentView() dans votre méthode onCreate() - s'il vous plaît vérifier cela.

13

Si vous le faites avant l'appel de la méthode setContentView(), les valeurs seront nulles.

Cela se traduira par null:

super.onCreate(savedInstanceState); 

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

setContentView(R.layout.main_contacts); 

tout cela fonctionnera 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 solution la plus rapide à votre problème, je crois est simplement que vous êtes crochets manquants sur votre getText. Il suffit d'ajouter () à edit.getText().toString() et cela devrait le résoudre

3

Placez ce qui suit après la méthode setContentView().

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