您好我使用的是Android Studio,我在runOnUiThread中使用了Deprecated函数 它迫使我在runOnUiThread中使用一个Final Variable 这对新函数来说没问题但是对于Deprecated函数我得到一个错误
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();
答案 0 :(得分:3)
您的问题不是setBackgroudDrawable
方法,而是Thread.start()
,它不会返回任何内容(void
),而您尝试将其返回值分配给thread
本地变量
您既可以更改Thread thread = new Thread() { ... }
,又可以在没有作业的情况下致电thread.start()
或简单new Thread() { ... }.start();
答案 1 :(得分:1)
您是否需要在其他地方使用thread
变量?我觉得你不需要。
如果是这样,只需更改第一行
Thread thread = new Thread() {
到
new Thread() {
您的.start()将返回void,并且您无法执行Thread thread=//some thing void
,因为它需要一些Thread类型。