Android 如何从EditText获取文本?

Android 如何从EditText获取文本?,android,user-interface,android-edittext,Android,User Interface,Android Edittext,问题很简单。 但是我想知道我们到底在哪里引用gui元素? 因为在哪一个地方是最好的定义: final EditText edit = (EditText) findViewById(R.id.text_xyz); edit.getText.tostring(); 当我尝试在默认的oncreate()中执行时,得到的是空值。 因此,对于最佳实践,您是否建议使用单独的类来引用main.xml中已经定义的gui元素。从这里我们可以调用这些元素的各种方法,比如gettext或settText?好吧

问题很简单。 但是我想知道我们到底在哪里引用gui元素? 因为在哪一个地方是最好的定义:

final EditText edit =  (EditText) findViewById(R.id.text_xyz);
 edit.getText.tostring();
当我尝试在默认的oncreate()中执行时,得到的是空值。
因此,对于最佳实践,您是否建议使用单独的类来引用main.xml中已经定义的gui元素。从这里我们可以调用这些元素的各种方法,比如gettext或settText?

好吧,这取决于您的需要。我经常在活动中保留对小部件的引用(作为类字段),并在
onCreate
方法中设置它们。我认为这是个好主意

可能是因为在
onCreate()
方法中设置
contentView()
之前试图调用
findViewById()
,请检查这一点。

如果是在
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();

我认为解决问题的最快方法就是在
getText
中缺少括号。只需将
()
添加到
edit.getText().toString()
,就可以解决问题了将以下内容放在setContentView()方法之后

在Kotlin 1.3中

 val readTextFromUser = (findViewById(R.id.inputedText) as EditText).text.toString()

这将读取用户在UI屏幕上键入的当前文本

将其放入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();
    }
}
那里!辩论结束了

edit.getText().toString()
{
    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();
    }
}