2013-08-26 167 views
2

我希望我的图像按钮在每次点击时从一个图像更改为另一个图像。在我的代码中,这只能工作一次,图像改变,按钮不会改变onClick。每次点击都会改变Android图像按钮

有人可以帮忙吗?

package com.wepromoteme.brapp; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageButton; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

setupPlayPauseButton1(); 

} 

private void setupPlayPauseButton1() { 
    ImageButton btn1 = (ImageButton) findViewById(R.id.play_pause1); 

    btn1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      ImageButton btn1 = (ImageButton) 
findViewById(R.id.play_pause1); 
      btn1.setImageResource(R.drawable.play); 
     } 
    }); 
} 
} 

感谢

@ shree202

这是新代码:

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

setupPlayPauseButton1(); 

} 

private void setupPlayPauseButton1() { 
    final ImageButton btn1 = (ImageButton) findViewById(R.id.play_pause1); 

    btn1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      int i=0; 
      if(i%2==0) { 
       btn1.setImageResource(R.drawable.play); 
      } else { 
       btn1.setImageResource(R.drawable.pause); 

      } 
     } 
    }); 
} 
} 

感谢

+1

如果每次你点击按钮,图像*总是*设置为'R.drawable.play',我不希望图像永远改变为别的东西。你认为你应该如何处理这个问题(你一定想到了什么)? –

+0

Inside onClick使用bt1.getBackground()获取图像背景并使用if else进行比较,然后更改背景。 –

回答

1

您应该扩展ImageButton并保持按钮的状态。所以它会改变你的点击监听器到这样的事情:

@Override 
    public void onClick(View v) { 
     MyImageButton btn1 = (MyImageButton) findViewById(R.id.play_pause1); 
     btn1.toggleState(); 
     switch(btn1.getState()){ 
      case 0: 
       btn1.setImageResource(R.drawable.play); 
       break; 
      case 1: 
       bt1.setImageResource(R.drawable.stop); 
       break; 
     } 
    } 
+0

嘿,谢谢你,我按照你的例子推荐了我的代码,但它仍然不起作用。你可以看一下吗? – RobbieP14383

+0

'private void setupPlayPauseButton1(){ \t \t ImageButton btn1 =(ImageButton)findViewById(R.id.play_pause1); \t \t \t \t btn1.setOnClickListener(新View.OnClickListener(){ \t \t \t \t \t \t @Override \t \t公共无效的onClick(视图v){ \t \t \t \t的ImageButton BTN1 =(的ImageButton)findViewById (R.id.play_pause1); \t \t btn1.toggleState(); \t \t s witch(btn1.getState()){ \t \t case 0: \t \t btn1.setImageResource(R.drawable.play); \t \t break; \t \t case 1: \t \t btn1.setImageResource(R.drawable.pause); \t \t break; \t \t} \t \t \t} \t \t}); \t}' – RobbieP14383

+0

错误是方法getState()未定义类型ImageButton toggleState和getState? – RobbieP14383