2016-11-08 7 views
0

愚かなnoob質問ですが、誰かが親切に助けてくれることを願っています! ボタンを押したときに2つのソースの間で画像を変更しようとしています。 2つの画像は、pic1およびpic2と呼ばれるドロアブルに格納されます。コードを実行すると、画像が2回変化してさらに変化しなくなります。誰か説明できますか?あなたは現在、変数が最終的なものでは更新されませんのでアンドロイドイメージが2回後に停止するのはなぜですか?

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

:ここ

はコードです。 javaでは、最終変数see hereを変更することはできません。 ちょうどそれを試してみて、私は

を何が起こるか知っているのonClick方法で

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 

     } 
    }); 

をこれらの変数のデフォルトまたはパブリックを宣言し、現在の変数を更新

関連する問題