2012-01-30 2 views
1

У меня есть ToggleButton, который должен менять элементы (и функции) некоторых других кнопок при переключении вкл/выкл.<ToggleButton> onClickListener - изменение возвращаемого назад значения по умолчанию

До сих пор мне только удалось заставить его работать в одном направлении, используя этот код.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    toggle = (ToggleButton) findViewById(R.id.bRedGreen); 
    toggle.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      minuskugle = (Button) findViewById(R.id.bBallhole); 
      minuskugle.setBackgroundResource(R.drawable.redballinhole); 

     } 

    }); 
} 

Как вы можете изменить обратный возврат к умолчанию по другому клику?

_ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _

Это работает для одной записи.

Однако, если я добавляю несколько записей, он приходит с ошибкой для «else».

Это работает:

 @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      pluskugle = (Button) findViewById(R.id.bBallhole); 
      minuskugle = (Button) findViewById(R.id.bBallhole); 

      pluskegle = (Button) findViewById(R.id.bKegle); 
      minuskegle = (Button) findViewById(R.id.bKegle); 

     if(toggle.isChecked()) 
      minuskugle.setBackgroundResource(R.drawable.redballinhole); 
     else 
      pluskugle.setBackgroundResource(R.drawable.whiteballhole); 

Это не

 @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      pluskugle = (Button) findViewById(R.id.bBallhole); 
      minuskugle = (Button) findViewById(R.id.bBallhole); 

      pluskegle = (Button) findViewById(R.id.bKegle); 
      minuskegle = (Button) findViewById(R.id.bKegle); 

     if(toggle.isChecked()) 
      minuskugle.setBackgroundResource(R.drawable.redballinhole); 
      minuskegle.setBackgroundResource(R.drawable.redkegle); 
     else 
      pluskugle.setBackgroundResource(R.drawable.whiteballhole); 
      pluskegle.setBackgroundResource(R.drawable.redkegle); 
+0

WTF вы делаете? setBackgroundResource для одной и той же кнопки дважды? –

+0

Это не та же кнопка, внимательно прочитайте. –

ответ

1

Попробуйте это:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    toggle = (ToggleButton) findViewById(R.id.bRedGreen); 
    toggle.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      minuskugle = (Button) findViewById(R.id.bBallhole); 
      if(toggle.isChecked()) 
       minuskugle.setBackgroundResource(R.drawable.redballinhole); 
      else 
       minuskugle.setBackgroundResource(R.drawable.xy); 


     } 

    }); 
} 
+0

Я отредактировал свой OP для дальнейшего опроса :) –

+0

Вы сковываете скобки {}. Поэтому вам нужно написать: if (...) {...} else {...} – Prexx

1

фиктивная раствор

Ведите булево где-то, чтобы сохранить состояние

boolean isPressed = false; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    toggle = (ToggleButton) findViewById(R.id.bRedGreen); 
    toggle.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      minuskugle = (Button) findViewById(R.id.bBallhole); 
      if(!isPressed) 
       minuskugle.setBackgroundResource(R.drawable.redballinhole); 
      else 
       minuskugle.setBackgroundResource(R.drawable.yourotherdrawable); 
      isPressed = !isPressed; 
     } 
    }); 
} 
Смежные вопросы