Как получить текст из 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()

Это прочитает текущий текст, который пользователь ввел на экране пользовательского интерфейса.

Другие вопросы по тегам