0

我有一个适用于我的 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在图像上有所不同,我已经检查过它们在使用前是否已初始化。

4

3 回答 3

2

问题是我已将 EditText 设置为仅接受数值。在代码中,我插入了一个字符串。我必须将字符串更改为整数才能使其正常工作。

于 2012-09-15T08:35:47.280 回答
0

可能您进行了跨线程访问。您需要调用该调用。

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

创建一个Handler并调用.post()一个为您设置文本的可运行文件。

于 2012-09-14T20:11:25.973 回答
0

你需要做类似的事情

String value = width.getText().toString();

然后打电话

setText();
于 2012-09-14T20:19:53.407 回答