我有一个用于名称字段的EditText字段和一个按钮。当我在字段中键入名称并按下按钮时。它应显示“嗨,”和EditText字段的值。
我的解决方案是在EditText对象上使用getText()。toString()并将其传递给字符串变量。但是,只要我将其用于setText(),它就会返回“”。
我改用它,它可以工作,但是我很困惑有什么区别? nametext.setText(“ Hi,nametext.getText()。toString());
Button btn_show;
EditText nametext;
String input_msg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nametext = findViewById(R.id.name_text);
input_msg = nametext.getText().toString();
btn_show = findViewById(R.id.hi);
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nametext.setText("Hi, " + input_msg); // this returns ""
/* when i use nametext.getText().toString() in place of input_msg
/* it returns the string I typed in the edittext. What's the
/* difference?
/* nametext.setText("Hi,nametext.getText().toString()); // returns the actual string I typed in the edittext field
}
});
}
nametext.setText(“ Hi,nametext.getText()。toString()); //返回在字段中键入的实际字符串
nametext.setText(“ Hi,” + input_msg); //返回“”
答案 0 :(得分:3)
您好,您以正确的方式进行操作,只是在点击之前致电getText()
时遇到了一个小错误。
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
input_msg = nametext.getText().toString();
nametext.setText("Hi, " + input_msg);
}
});
答案 1 :(得分:0)
存在差异的原因是,当您填充input_msg
时,该值仍为空。在字符串填充视图后单击按钮时,input_msg
不变。
因此,您需要做的就是仅在单击按钮时获取值:
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nametext.setText("Hi, " + nametext.getText().toString());
}
});
如果要使用Java 8,它甚至更简单:
btn_show.setOnClickListener((View.OnClickListener) v -> nametext.setText("Hi, " + nametext.getText().toString()));