EditText.setText上的Android运行时错误

时间:2012-09-14 20:06:02

标签: android android-edittext

我有一个适用于我的PC应用程序的代码,但当我将其转换为Android应用程序时,它告诉我在setText方法中有错误。

((EditText) findViewById(R.id.editText2)).addTextChangedListener(new TextWatcher() {

    public void afterTextChanged(Editable arg0) {
        EditText width = (EditText) findViewById(R.id.editText1);
        EditText height = (EditText) findViewById(R.id.editText2);

        System.out.println("editText2: " + width.getText() + " " + height.getText());

        try {
            double _width = Math.round((Double.parseDouble(height.getText() + "") / IMAGE_HEIGHT) * IMAGE_WIDTH);
            String value = String.valueOf(_width).substring(0, String.valueOf(_width).lastIndexOf("."));
            width.setText(value);
        } catch(Exception e) {

        }

    }

    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}

});

我说width.setText(value),我收到AndroidRuntime错误。这有什么问题? IMAGE_WIDTHIMAGE_HEIGHT在图片上有所不同,我在使用前检查过它们是否已初始化。

2 个答案:

答案 0 :(得分:2)

问题在于我将EditText设置为仅接受数值。在代码中我插入了一个字符串。我不得不将字符串更改为整数以使其正常工作。

答案 1 :(得分:0)

您可能会进行跨线程访问。你需要调用那些电话。

您需要使用Handler。另请参阅AsyncTask

创建Handler并使用runnable调用.post(),为您设置文本。