我可以在Android中动态初始化最终字符串吗?

时间:2014-09-10 06:22:23

标签: android android-edittext

我试过了,但字符串 uname 的值始终为null。

EditText username = (EditText)findViewById(R.ID.newusername);
final String uname=username.getText().toString();

有没有解决方案?

2 个答案:

答案 0 :(得分:2)

在尝试读取其值之前,您必须在editText中放置一些内容,否则它将始终为null。此外,它是R.id ...小写。

来自Java代码:

username.setText("testestestest");
uname = username.getText().toString();

在XML代码中:

<EditText
android:text="Default username"/>

或者,向其添加一个侦听器,并读取侦听器内的输入。

username.addTextChangedListener(new TextWatcher() {                   
  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count) {
     if(s!=null && s.length() > 0){
         //do stuff
     }                         
  }                  
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  }                     
  @Override
  public void afterTextChanged(Editable s) {                     
  }
});

现在它不会为空。

答案 1 :(得分:1)

我会声明如下:

final String uname;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);

    EditText username = (EditText)findViewById(R.id.newusername);
    uname = username.getText().toString();
}

这有帮助吗?