25

这个问题很简单。但我想知道我们究竟在哪里引用了 gui 元素?就像在哪里定义最好的地方:

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

当我在默认的 oncreate() 中尝试它时,我得到空值。因此,为了获得最佳实践,您是否推荐一个单独的类来引用 main.xml 中这些已定义的 gui 元素。从这里我们可以调用这些元素的各种方法,如gettext或settext?

4

7 回答 7

27

我相信解决问题的最快方法是您的getText. 只需添加()即可edit.getText().toString()解决它

于 2012-12-05T01:24:43.443 回答
19

好吧,这取决于您的需求。我经常在活动中保留对小部件的引用(作为类字段) - 并将它们设置在onCreate方法中。我认为这是一个好主意可能您的空值的原因是您在设置方法之前
尝试调用- 请检查。findViewById()contentView()onCreate()

于 2009-12-29T12:53:52.267 回答
13

如果您在方法调用之前执行此操作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();
于 2009-12-29T13:02:25.353 回答
4

将以下内容放在 setContentView() 方法之后。

final EditText edit =  (EditText) findViewById(R.id.Your_Edit_ID);
String emailString = (String) edit.getText().toString();
Log.d("email",emailString);
于 2015-07-21T02:08:39.537 回答
3
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);
于 2012-11-04T20:51:10.143 回答
0

在科特林 1.3

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

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

于 2020-08-16T00:01:41.487 回答
0

把它放在你的 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();
    }
}

那里!争论已定!

于 2020-09-06T04:54:35.307 回答