Android layout onClick和setImagResource[Android]API 10

Android layout onClick和setImagResource[Android]API 10,android-layout,Android Layout,我试图理解为什么我会遇到下面的问题。 我有一个ImageView,我给它设置了一个图像,然后我给它设置了一个onClickListener,所以当你点击图像时,通过image01.setImageResource(R.drawable.newImage)更改图像(为新图像)。之后,我调用一个方法,检查一个条件,如果它是真的,我会再次将图像更改为默认图像。 但我看不到变化,因为它会立即变化。我还插入了一个睡眠,使它变慢。 (默认情况下,在xml代码中,我将图像设置为oldImage) 好的。。。也

我试图理解为什么我会遇到下面的问题。 我有一个ImageView,我给它设置了一个图像,然后我给它设置了一个onClickListener,所以当你点击图像时,通过image01.setImageResource(R.drawable.newImage)更改图像(为新图像)。之后,我调用一个方法,检查一个条件,如果它是真的,我会再次将图像更改为默认图像。 但我看不到变化,因为它会立即变化。我还插入了一个睡眠,使它变慢。 (默认情况下,在xml代码中,我将图像设置为oldImage)

好的。。。也许还不清楚。。让我们看看代码:

private void myMethod(){
        ImageView image01 = (ImageView) findViewById(R.id.image01);
        image01.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
              //When you click on image it change!
              image01.setImageResource(R.drawable.newImage);
              checkImg(image01);
              }
        });
}


private void checkGame(ImageView img){
        try{
           Thread.sleep(1000);  

           if(condition)
               img.setImageResource(R.drawable.oldImage);

        }catch (Exception e) {
          e.printStackTrace();
        }
}
我立刻看到了那张旧照片。有什么问题吗? 在myMethod()中的所有方法终止之前,视图更改是否可能不会应用于myMethod()中

提前感谢使用Thread.sleep()方法,实际上您正在等待主UI线程。主UI线程的方法不同步。请注意这一点

请通过developers.android网站轻松使用线程。。。在看到有用的代码之前

private void myMethod(){
        ImageView image01 = (ImageView) findViewById(R.id.image01);
        image01.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
              //When you click on image it change!
              image01.setImageResource(R.drawable.newImage);
              checkGame(image01);
              }
        });
}


private void checkGame(ImageView img){
        try{
          // Thread.sleep(1000);  

           if(condition)
         image01.postDelayed(new Runnable() {                   
                    @Override
                    public void run() {
                                 image01.setImageResource(R.drawable.oldImage);

}
                }, 2000);              

        }catch (Exception e) {
          e.printStackTrace();
        }
}