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_WIDTH画像によってIMAGE_HEIGHT異なりますが、使用する前に初期化されていることを確認しました。

4

3 に答える 3

2

問題は、数値のみを受け入れるようにEditTextを設定していたことでした。コードでは、文字列を挿入していました。文字列を機能させるには、文字列を整数に変更する必要がありました。

于 2012-09-15T08:35:47.280 に答える
0

あなたは次のようなことをする必要があります

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

そして、ただ電話する

setText();
于 2012-09-14T20:19:53.407 に答える
0

おそらく、クロススレッドアクセスを行っています。その呼び出しを呼び出す必要があります。

Handlerを使用する必要があります。AsyncTaskも参照してください。

テキストを設定するランナブルを作成しHandlerて呼び出します。.post()

于 2012-09-14T20:11:25.973 に答える