Как получить текст из EditText?
Вопрос довольно прост. Но я хочу знать, где именно мы делаем наши ссылки на элементы графического интерфейса? Как в котором это лучшее место для определения:
final EditText edit = (EditText) findViewById(R.id.text_xyz);
edit.getText.tostring();
Когда я пытаюсь сделать это внутри oncreate() по умолчанию, я получаю нулевые значения. Так что для лучшей практики, вы рекомендуете отдельный класс для ссылки на эти уже определенные элементы графического интерфейса в main.xml. Отсюда мы можем вызывать различные методы этих элементов, такие как gettext или settext?
5 ответов
Ну, это зависит от ваших потребностей. Очень часто я сохраняю ссылки на виджеты в деятельности (как поля класса) - и устанавливаю их в onCreate
метод. Я думаю, что это хорошая идея
Вероятно, причина ваших нулей в том, что вы пытаетесь позвонить findViewById()
прежде чем установить contentView()
в вашем onCreate()
метод - пожалуйста, проверьте это.
Я полагаю, что самое быстрое решение вашей проблемы заключается в том, что в вашем getText
, Просто добавь ()
в edit.getText().toString()
и это должно решить
Если вы делаете это до setContentView()
вызов метода, тогда значения будут нулевыми.
Это приведет к нулю:
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();
Поместите следующее после метода setContentView().
final EditText edit = (EditText) findViewById(R.id.Your_Edit_ID);
String emailString = (String) edit.getText().toString();
Log.d("email",emailString);
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);
Поместите это в свой MainActivity:
{
public EditText bizname, storeno, rcpt, item, price, tax, total;
public Button click, click2;
int contentView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.main_activity );
bizname = (EditText) findViewById( R.id.editBizName );
item = (EditText) findViewById( R.id.editItem );
price = (EditText) findViewById( R.id.editPrice );
tax = (EditText) findViewById( R.id.editTax );
total = (EditText) findViewById( R.id.editTotal );
click = (Button) findViewById( R.id.button );
}
}
Положите это под кнопку или что-то в этом роде
public void clickBusiness(View view) {
checkPermsOfStorage( this );
bizname = (EditText) findViewById( R.id.editBizName );
item = (EditText) findViewById( R.id.editItem );
price = (EditText) findViewById( R.id.editPrice );
tax = (EditText) findViewById( R.id.editTax );
total = (EditText) findViewById( R.id.editTotal );
String x = ("\nItem/Price: " + item.getText() + price.getText() + "\nTax/Total" + tax.getText() + total.getText());
Toast.makeText( this, x, Toast.LENGTH_SHORT ).show();
try {
this.WriteBusiness(bizname,storeno,rcpt,item,price,tax,total);
String vv = tax.getText().toString();
System.console().printf( "%s", vv );
//new XMLDivisionWriter(getString(R.string.SDDoc) + "/tax_div_business.xml");
} catch (ReflectiveOperationException e) {
e.printStackTrace();
}
}
Там! Спор улажен!
В Котлине 1.3
val readTextFromUser = (findViewById(R.id.inputedText) as EditText).text.toString()
Это прочитает текущий текст, который пользователь ввел на экране пользовательского интерфейса.