0

我有一个编辑文本,我需要连接到 textchanged 事件来执行任务。我首先为 edittext 定义了 overrdiimg,但是在文本更改事件中添加文本提取代码后,IDE 标记了一个错误并通过添加一个自动更正它final像这样的行中的修饰符

 final EditText et1=(EditText)findViewById(R.id.editText1); 

在更改文本后,应用程序崩溃了,所以我尝试检索编辑文本 2 次,首先挂钩事件,然后获取文本,然后应用程序也崩溃。IDE 之前曾提示我在类似情况下添加 final 修饰符,但它使应用程序崩溃,所以我在需要对象的位置添加了 fetchbyID

 EditText et1=(EditText)findViewById(R.id.editText1);
        et1.addTextChangedListener(new TextWatcher() {

              @Override
              public void onTextChanged(CharSequence s, int start, int before, int count) {

                 new Thread(new Runnable() {
                        public void run() {
                        ImageView img=(ImageView)findViewById(R.id.imageView1);
                      EditText et=(EditText)findViewById(R.id.editText1);
                        img.setImageBitmap(thumbnail);
                          Bitmap b = workwithtext(thumbnail,et.getText().toString(),10);
                          img.setImageBitmap(b);
                        }
                      }).start();
              }

              @Override
              public void beforeTextChanged(CharSequence s, int start, int count, int after) {

              }

              @Override
              public void afterTextChanged(Editable s) {

              }
            });

请帮我解决这个问题

4

3 回答 3

1

它崩溃是因为您试图从非 UI 线程修改 UI 组件。

new Thread(new Runnable() {
             public void run() {
                 ImageView img=(ImageView)findViewById(R.id.imageView1);
                 //...                       
                 img.setImageBitmap(thumbnail);
                 //...
                 }
}).start();
于 2013-07-07T15:58:48.720 回答
0

您正在从后台更新用户界面,这是不可能的。还将您的视图初始化移动到onCreate.

  img.setImageBitmap(b); // updating ui from thread not possible

用于runOnUiThread更新ui

     runOnUiThread(new Runnable() {
     public void run() {
           // update ui here
     }
     });

请注意,每次调用你的时候你都在启动一个新线程onTextChanged,这不好。此外,您每次都在不需要的线程运行方法中初始化 imageview 和 editext。

于 2013-07-07T16:05:52.277 回答
0

将 EditText et1 作为类中的字段而不是局部变量。

于 2013-07-07T16:01:52.660 回答