EditText永远不会有价值

时间:2014-05-28 03:19:03

标签: java android xml

我有一个非常基本的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重新变成了一个愚蠢的错误。抱歉。固定。问题仍然存在。

2 个答案:

答案 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();

希望它有所帮助。