我是一名年轻的计算机科学家,我正在学习Android开发。
我从今天早上开始尝试在同一版面上传递2 inputtext
之间的值。
当用户编辑一个inputtext
时,我想将新值粘贴到另一个inputtext
。
这是我的代码:
private void syncInput() {
((EditText)findViewById(R.id.firstInput)).addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
EditText EditText1 = (EditText)findViewById(R.id.firstInput);
((EditText)findViewById(R.id.SecondInput)).setText(EditTextATK.EditText1().toString());
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
});
}
在我的应用程序启动后,当我编辑我的firstInput时,我有错误:
06-22 14:08:25.196: E/AndroidRuntime(519): java.lang.NullPointerException
06-22 14:08:25.196: E/AndroidRuntime(519): at com.d3ckard.toolbox.activity.MyActivity$3.afterTextChanged(MyActivity.java:71)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.widget.TextView.sendAfterTextChanged(TextView.java:6145)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:6328)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.text.SpannableStringBuilder.sendTextHasChanged(SpannableStringBuilder.java:897)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:353)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)
06-22 14:08:25.196: E/AndroidRuntime(519): at android.text.method.NumberKeyListener.onKeyDown(NumberKeyListener.java:117)
第71行是这个:
((EditText)findViewById(R.id.SecondInput)).setText(EditTextATK.EditText1().toString());
答案 0 :(得分:1)
更改
((EditText)findViewById(R.id.SecondInput)).setText(EditTextATK.EditText1().toString());
到
((EditText)findViewById(R.id.SecondInput)).setText(EditText1().getText().toString());
答案 1 :(得分:0)
请尝试
private void syncInput() {
EditText EditText1 = (EditText)findViewById(R.id.firstInput);
EditText EditText2 = (EditText)findViewById(R.id.SecondInput);
EditText1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
EditText2.setText(EditText1.gettext().toString());
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
});
}
答案 2 :(得分:0)
您的代码行缺失getText()
。它应该是:
((EditText)findViewById(R.id.SecondInput)).setText(EditTextATK.EditText1().getText().toString());