Как я могу изменить цвет фона моего MainActivity со второго занятия, используя цветные кнопки в качестве пользовательских настроек? - PullRequest
2 голосов
/ 30 сентября 2019

У меня есть программа с более чем одним действием. В моей MainActivity я могу нажать кнопку, которая отправит пользователя в ThirdActivity_ColorPicker. В третьем упражнении у меня есть три кнопки с именем colors, при нажатии на которые следует изменить цвет фона MainActivity. Кроме того, это не меняет цвет фона.

В MainActivity у меня есть намерение, которое переключает меня на третье действие.

private View.OnClickListener changeToColorPickerActivity = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      Intent goToThirdActivityColorPicker = new Intent(getApplication(), ThirdActivity_ColorPicker.class);
      startActivityForResult(goToThirdActivityColorPicker, COLOR_PICKER_REQUEST);
    }
  };

В третьем упражнении у меня есть три кнопки, красная, синяя и зеленая, которые при нажатии должны изменить цвет фона MainActivity на выбранный цвет.

  private View.OnClickListener changeMainActivityToBlue = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      Intent intentBlue = new Intent();
      setResult(RESULT_CODE_BLUE, intentBlue);
      finish();
    }
  };

Назадв MainActivity у меня есть onActivityResult для получения данных от третьего действия

  @Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    thirdAct = new ThirdActivity_ColorPicker();

    if(requestCode == RESULT_OK && resultCode == thirdAct.RESULT_CODE_RED){
      constraintLayout.findViewById(R.id.main_layout).setBackgroundColor(getColor(R.color.redBackground));
    }else if(requestCode == RESULT_OK && resultCode == thirdAct.RESULT_CODE_GREEN){
      constraintLayout.findViewById(R.id.main_layout).setBackgroundColor(getColor(R.color.greenBackground));
    }else if(requestCode == RESULT_OK && resultCode == thirdAct.RESULT_CODE_BLUE){
      constraintLayout.setBackgroundColor(getColor(R.color.blueBackground));
    }
  }

Результат, который я хотел бы, это изменить цвет фона с кодом выше, но используется правильно, потому что я знаю, что я где-то что-то не так делаю,Спасибо.

1 Ответ

0 голосов
/ 30 сентября 2019

В вашем ThirdActivity_ColorPicker измените код при каждом нажатии кнопки цвета, то есть (красный, зеленый, синий и т. Д.), Как показано ниже. Это установит данные Bundle и результат для предыдущего действия.

 Intent intentRed = new Intent();
 intentRed.putExtra(COLOR_CODE, 
 getApplicationContext().getResources().getColor(R.color.redBackground));
 setResult(Activity.RESULT_OK, intentRed);
 finish();

Затем в вашем MainActivity, в onActivityResult внесите следующие изменения:

 if (requestCode == COLOR_PICKER_REQUEST && resultCode == RESULT_OK) {
   if (data != null && data.getExtras() != null) {
      Bundle bundle = data.getExtras();
      int colorBg = bundle.getInt(COLOR_CODE);
      findViewById(R.id.mainBg).setBackgroundColor(colorBg);
    }
 }

COLOR_PICKER_REQUEST - это int, который вы устанавливаете для startActivityForResult, а COLOR_CODE - это любой String для ключа связки.

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