Как обновить свойства действия из намерения? - PullRequest
0 голосов
/ 28 декабря 2011

В настоящее время есть ситуация, когда я пытаюсь использовать кнопку, которая загружает диалог.Когда диалоговое окно открывается, оно позволяет вам выбрать цвет, а затем этот выбранный цвет используется для определения кнопки, на которую вы изначально нажали.Однако я действительно застрял.

Основной класс

package dom.MasterMind.Com;


public class NewGameActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newgame);

    Button choiceOne = (Button) findViewById(R.id.choiceOne);
    Button choiceTwo = (Button) findViewById(R.id.choiceTwo);
    Button choiceThree = (Button) findViewById(R.id.choiceThree);
    Button choiceFour = (Button) findViewById(R.id.choiceFour);



    final ColorPicker dialog = new ColorPicker(this);

    choiceOne.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            dialog.show();

        }
    });

    choiceTwo.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            dialog.show();

        }
    });

    choiceThree.setOnClickListener(new OnClickListener() {


        @Override
        public void onClick(View v) {

            dialog.show();
        }
    });

    choiceFour.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            dialog.show();

        }
    });
}
}

Диалоговый класс

package dom.MasterMind.Com;

public class ColorPicker extends Dialog{
public ColorPicker(Context context) {
    super(context);

    setContentView(R.layout.colorpicker);

    Button btnBlack = (Button)findViewById(R.id.btnBlack);
    Button btnBlue = (Button)findViewById(R.id.btnBlue);
    Button btnGreen = (Button)findViewById(R.id.btnGreen);
    Button btnPurple = (Button)findViewById(R.id.btnPurple);
    Button btnRed = (Button)findViewById(R.id.btnRed);
    Button btnYellow = (Button)findViewById(R.id.btnYellow);

    final Button test = (Button)findViewById(R.id.choiceOne);

    btnBlack.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            dismiss();
            test.setBackgroundColor(R.id.btnBlack);

        }
    });
}
}

Ответы [ 2 ]

0 голосов
/ 28 декабря 2011

если кнопка choiceOne находится в макете новой игры, который нельзя использовать в макете палитры цветов

попробуйте отправить цвет из класса диалога в основной класс, затем измените цвет кнопки в основном классе

и

Я думаю R.id.btnBlack это не цвет попробовать Color.parseColor("color code") Например.#ffffff

0 голосов
/ 28 декабря 2011

Взгляните на библиотеку android binding , она позволяет вам создать более гибкое MVVM -ориентированное решение, которое также решит вашу проблему, вам просто нужно один раз настроить привязки и команды и такая синхронизация / обновления будут работать автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...