我有一个非常基本的EditText,我通过按钮将数据作为double传递。
它的值似乎没有变化 - 如果我使用android:text="2"
并拉取值,它会变为2.但如果我将其留空,请输入它,然后尝试拉取值,它出现空白或无效。
问题:(因为我认为它还不够清晰)当我启动我的应用时,输入" 3"进入EditText,按下我的按钮,调用String b = input.getText().toString();
并在Toast和数学等式中输出b
,它是空白的,等式调用无效输入(我的try / catch)。据说EditText永远不会有值。
<EditText
android:id="@+id/input"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".3"
android:hint="-->"
android:inputType="number"
android:maxLines="1"
android:textColor="#ffffff" />
...
Spinner spinner1, spinner2; //class space
EditText res, input;
Button btnSubmit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setContentView(R.layout.fragment_math);
spinner1 = (Spinner)findViewById(R.id.unit_a);
spinner2 = (Spinner) findViewById(R.id.unit_b);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
res = (EditText) findViewById(R.id.result);
input = (EditText) findViewById(R.id.input);
...
public void convert(View view) {
int operation = 0;
double cm = 0;
String a;
Toast.makeText(MainActivity.this, MainActivity.this.input.getText().toString(), Toast.LENGTH_LONG).show();
if(operation == 0) {
//CM TO IN
try {
cm = Double.parseDouble(MainActivity.this.input.getEditableText().toString());
}catch(NumberFormatException nfe) {
Toast.makeText(MainActivity.this, "Invalid input! (" + MainActivity.this.input.getText().toString() + ")", Toast.LENGTH_LONG).show();
}
a = Double.toString(cmToIn(cm));
res.setText(a + "dfsdf", TextView.BufferType.EDITABLE); //same as below
}else if(operation == 1) {
//etc.
}else {
res.setText("Something went wrong! :("); //temp, completely dysfunctional
}
}
编辑:我道歉,我有一段时间的Toast是不正确的,因为我在复制前设法将Ctrl + Z重新变成了一个愚蠢的错误。抱歉。固定。问题仍然存在。
答案 0 :(得分:1)
input.getEditableText()
返回一个可编辑对象。
使用input.getText().toString()
返回Toast的字符串以显示。
更多信息:https://developer.android.com/reference/android/widget/EditText.html
答案 1 :(得分:1)
您必须在按钮的Convert
中调用方法onClick
(负责检索我可以从代码中看到的edittext文本)。 (而不是onCreate
)
然后这应该可以正常工作。
Toast.makeText(MainActivity.this, MainActivity.this.input.getText().toString(), Toast.LENGTH_LONG).show();
希望它有所帮助。