2013-08-26 4 views
2

Я хочу, чтобы мое изображение менялось с одного изображения на другое изображение при каждом нажатии. В моем коде это работает только один раз, изображение меняется, и кнопка не будет меняться обратно вкл.Изменение изображения на 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

Внутри 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 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 (View 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

Смежные вопросы