【发布时间】:2013-12-25 18:35:46
【问题描述】:
我的 MainFragment 中有多个 String 变量和 EditText 变量。对于所有的 EditText,我希望我的 String 变量在 EditText 的文本更改后分配值。目前我是这样做的:
private String itemName;
private String itemNumber;
private EditText itemNameET;
private EditText itemNumberET;
private void initEditTexts() {
itemName = itemNameET.getText().toString();
itemNumber = itemNumberET.getText().toString();
itemNameET.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
itemName = (String) s.toString();
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {}
});
itemNumberET.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
itemNumber = (String) s.toString();
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {}
});
我想尝试删除多余的代码,因为我在 Activity 中有很多 EditTexts。我正在考虑一起创建一个 CustomTextWatcher:
public class CustomTextWatcher implements TextWatcher {
private String text;
public CustomTextWatcher(String text) {
this.text = text;
}
@Override
public void afterTextChanged(Editable s) {
text = (String) s.toString();
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {}
}
但是这将不起作用,因为外部类变量仍未分配新值,因为它是按值传递的。我将如何在 Java 中执行具有传递引用效果的操作,或者我可以采取哪些其他方式将外部类变量传递给内部类并且该变量可以在内部类中更新?
【问题讨论】:
标签: java android pass-by-reference pass-by-value