1

嗨,我正在使用 Android Studio,我在 runOnUiThread 中使用不推荐使用的函数它迫使我在 runOnUiThread 中使用最终变量,这对于新函数来说是可以的,但是对于不推荐使用的函数,我得到一个错误

Error:(133, 16) error: incompatible types
required: Thread
found:    void

任何人都可以帮助解决这个问题。

    Thread thread = new Thread() {
        public void run() {
            try {
                String sURL = "http://pollsdb.com/schlogger/223.png";

                URL url = null;
                url = new URL(sURL);
                assert url != null;

                Bitmap bmp = null;
                bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                bmp = Bitmap.createScaledBitmap(bmp, 200, 200, false);
                BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bmp);

                final BitmapDrawable fbmpdw = bitmapDrawable;

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                            ib1.setBackground(fbmpdw);
                        } else {
                            ib1.setBackgroundDrawable(fbmpdw); // <---- this the problem
                        }
                    }
                });
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }.start();
4

2 回答 2

3

您的问题不是setBackgroudDrawable方法,而是,当您尝试将其返回值分配给局部变量时Thread.start(),它什么都不返回( )voidthread

您既可以更改 Thread thread = new Thread() { ... }然后调用thread.start(),也可以简单地 new Thread() { ... }.start();不分配

于 2014-07-15T09:19:12.787 回答
1

您是否需要thread在其他任何地方使用该变量?我不认为你需要。如果是这样,只需更改您的第一行

 Thread thread = new Thread() {

new Thread() {

您的 .start() 将返回 void,并且您不能Thread thread=//some thing void像期望的那样做一些 Thread 类型。

于 2014-07-15T09:22:01.893 回答