Подтвердить что ты не робот

Как получить текст из EditText?

Вопрос довольно прост. Но я хочу знать, где именно мы делаем ссылки на элементы gui? Как и в каком месте лучше всего определить:

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

Когда я пытаюсь сделать это внутри default onCreate(), я получаю нулевые значения. Поэтому для лучшей практики рекомендуйте отдельный класс для ссылки на эти уже определенные элементы gui в main.xml. Отсюда мы можем вызвать различные методы этих элементов, например gettext или settext?

4b9b3361

Ответ 1

Ну, это зависит от ваших потребностей. Очень часто я держу ссылки на виджеты в действии (как поля класса) и устанавливаю их в методе onCreate. Я думаю, что это хорошая идея
Вероятно, причиной ваших нулей является то, что вы пытаетесь вызвать findViewById(), прежде чем устанавливать contentView() в свой метод onCreate() - пожалуйста, проверьте это.

Ответ 2

Самое быстрое решение вашей проблемы, я считаю, что на вашем getText просто отсутствуют скобки. Просто добавьте () в edit.getText().toString(), и это должно решить его

Ответ 3

Если вы делаете это перед вызовом метода setContentView(), то значения будут пустыми.

Это приведет к null:

super.onCreate(savedInstanceState);

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

setContentView(R.layout.main_contacts);

пока это будет работать нормально:

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

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

Ответ 4

Поместите следующий метод после метода setContentView().

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

Ответ 5

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);