<ToggleButton> onClickListener - изменение рисования обратно на значение по умолчанию - PullRequest
1 голос
/ 30 января 2012

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

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

    @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);

Ответы [ 2 ]

1 голос
/ 30 января 2012

Пустой раствор

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

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;
        }
    });
}
1 голос
/ 30 января 2012

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

    @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);


        }

    });
}
...