将文本从 EditText 元素设置为 TextView 显示空白
Setting text to TextView from EditText element shows blank
我有一个用于名称字段的 EditText 字段和一个按钮。当我在字段中键入名称并按下按钮时。它应该显示 "Hi, " + EditText 字段的值。
我的解决方案是在 EditText 对象上调用 getText().toString() 并将其传递给字符串变量。但它 returns "" 每当我用它来设置文本()时。
我改用了它并且它有效但我很困惑有什么区别? nametext.setText("嗨,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()); // returns 在字段中键入的实际字符串
nametext.setText("Hi, " + input_msg); // returns ""
您好,您的做法是正确的,只是您在 Click.
之前调用 getText()
时犯了一个小错误
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
input_msg = nametext.getText().toString();
nametext.setText("Hi, " + input_msg);
}
});
存在差异的原因是当您填充 input_msg
时,该值仍然为空。当您在字符串填充视图后单击按钮时,input_msg
没有改变。
所以你需要做的是只在点击按钮时获取值:
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nametext.setText("Hi, " + nametext.getText().toString());
}
});
而如果要用Java8,就更简单了:
btn_show.setOnClickListener((View.OnClickListener) v -> nametext.setText("Hi, " + nametext.getText().toString()));
我有一个用于名称字段的 EditText 字段和一个按钮。当我在字段中键入名称并按下按钮时。它应该显示 "Hi, " + EditText 字段的值。
我的解决方案是在 EditText 对象上调用 getText().toString() 并将其传递给字符串变量。但它 returns "" 每当我用它来设置文本()时。
我改用了它并且它有效但我很困惑有什么区别? nametext.setText("嗨,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()); // returns 在字段中键入的实际字符串
nametext.setText("Hi, " + input_msg); // returns ""
您好,您的做法是正确的,只是您在 Click.
之前调用getText()
时犯了一个小错误
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
input_msg = nametext.getText().toString();
nametext.setText("Hi, " + input_msg);
}
});
存在差异的原因是当您填充 input_msg
时,该值仍然为空。当您在字符串填充视图后单击按钮时,input_msg
没有改变。
所以你需要做的是只在点击按钮时获取值:
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nametext.setText("Hi, " + nametext.getText().toString());
}
});
而如果要用Java8,就更简单了:
btn_show.setOnClickListener((View.OnClickListener) v -> nametext.setText("Hi, " + nametext.getText().toString()));