我想用线程中的链接动态更改图像。
public class MainActivity extends AppCompatActivity {
public static final Integer[] images =
{
R.drawable.vr_final_icon,
R.drawable.playnew
};
public static final String[] Links =
{
"http://stackoverflow.com/questions/541487/implements-runnable-vs-extends-thread",
"http://www.facebook.com",
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable()
{
@Override
public void run()
{
try
{
Random r = new Random();
int Low = 0;
int High = images.length;
final int Result = r.nextInt(High - Low) + Low;
INCP(Result);
Thread.sleep(6000);
run();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void INCP(final int incp)
{
Drawable res = getResources().getDrawable(images[incp]);
ImageView INCPimage = (ImageView) findViewById(R.id.INCP);
INCPimage.setImageDrawable(res);
INCPimage.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(Links[incp]));
startActivity(intent);
}
});
}
}).start();
}
}
但它给了我错误
只有创建视图层次结构的原始线程才能触及其视图。
我该如何解决它! 我希望图像在运行时通过链接动态更改。
答案 0 :(得分:0)
只有主线程可以触摸视图。改变这样的代码;
Random r = new Random();
int Low = 0;
int High = images.length;
final int Result = r.nextInt(High - Low) + Low;
runOnUiThread(new Runnable() {
@Override
public void run() {
INCP(Result);
}
});
Thread.sleep(6000);
run();