2016-11-08 6 views
0

바보 같은 질문이지만, 누군가가 친절하게 도울 수 있기를 바랍니다! 버튼을 누를 때 두 소스 사이에서 이미지를 변경하려고합니다. 두 개의 이미지는 pic1 및 pic2라고하는 드로어 블에 저장됩니다. 그러나 코드를 실행하면 그림이 두 번 바뀌고 더 이상 바뀌지 않습니다. 누군가 설명 할 수 있습니까? 여기 왜 안드로이드 이미지가 두 번이나 멈추는 걸까요?

코드입니다 :

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final Button changeBtn = (Button) findViewById(R.id.buttonChange); 
     final ImageView image = (ImageView) findViewById(R.id.image1); 
     final Drawable current = image.getDrawable(); //this is pic1 
     changeBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(image.getDrawable()==current) //if pic1 
        image.setImageResource(R.drawable.pic2); 
       else image.setImageResource(R.drawable.pic1); 
      } 
     }); 

답변

0

현재를 업데이트하지 않고 변수가 마지막이기 때문에. 자바에서는 최종 변수 see here을 변경할 수 없습니다. 그냥 공공 그 변수 디폴트를 선언하고

Button changeBtn; 
ImageView image; 
Drawable current; 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    changeBtn = (Button) findViewById(R.id.buttonChange); 
    image = (ImageView) findViewById(R.id.image1); 
    current = image.getDrawable(); //this is pic1 
    changeBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(image.getDrawable()==current) //if pic1 
       image.setImageResource(R.drawable.pic2); 
      else image.setImageResource(R.drawable.pic1); 
    current = image.getDrawable(); //this will update the current , you have to update the current because it change in the if/else condition 

     } 
    }); 

그것을 시도 온 클릭 메소드에서 현재의 변수를 업데이트하고 나에게 무슨 일 알려