Кнопка изменения во фрагменте

У меня есть две кнопки во фрагменте, которые я хочу, при нажатии на первую кнопку эта кнопка меняется на белый цвет, а вторая кнопка меняется на черный, и если щелкнуть по второй кнопке, вторая кнопка изменится на белый цвет, а первая кнопка изменится на черный цвет это мой код в mainActivity:

public void buttonOne(View view) {
    Button1 = findViewById(R.id.tg_btn2);
    Button2 = findViewById(R.id.tg_btn1);
    //If the Button is off
    if (!btnOneOn) {

        Button2.setBackgroundColor(getResources().getColor(R.color.md_blue_grey_900));
        Button1.setBackgroundColor(getResources().getColor((R.color.md_white_1000)));
        Button1.setTextColor(getResources().getColor(R.color.md_blue_grey_100));
        Button2.setTextColor(getResources().getColor(R.color.md_black_1000));
        btnTwoOn = false;
        btnOneOn = true;
        Log.i("Salam",btnOneOn.toString());
    }
    //If it is is clicked while on
    else {
        btnTwoOn = false;
        Button2.setBackgroundColor(getResources().getColor((R.color.md_blue_grey_900)));
    }
}

public void buttonTwo(View view) {
    Button2 = findViewById(R.id.tg_btn2);
    Button1 = findViewById(R.id.tg_btn1);
    //If the Button is off
    if (!btnTwoOn) {

        Button1.setBackgroundColor(getResources().getColor(R.color.md_blue_grey_900));
        Button2.setBackgroundColor(getResources().getColor((R.color.md_white_1000)));
        btnOneOn = false;
        btnTwoOn = true;
    }
    //If it is is clicked while on
    else {
        btnOneOn = false;
        Button1.setBackgroundColor(getResources().getColor((R.color.md_blue_grey_900)));
    }

но это не работает правильно что вы предлагаете?

Что именно он делает, когда вы пробуете этот код?

Twometer 14.09.2018 16:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
252
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Может проблема в этом фрагменте кода

setBackgroundColor(getResources().getColor(R.color.md_blue_grey_900))

Попробуйте вот так

setBackgroundColor(ContextCompat.getColor(context, R.color.md_blue_grey_900))
Ответ принят как подходящий

Это действие решения:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.activity_main2, container, false);

    final Button button1 = v.findViewById(R.id.button);
    final Button button2 = v.findViewById(R.id.button2);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            button1.setBackgroundResource(R.color.gray);
            button2.setBackgroundResource(R.color.black);
        }
    });

    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            button1.setBackgroundResource(R.color.black);
            button2.setBackgroundResource(R.color.gray);

        }
    });
    return v;
}

activity_main2.xml:

<Button
    android:id = "@+id/button"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "Button1"
    android:background = "@color/black"
    android:textColor = "@color/white" />

<Button
    android:id = "@+id/button2"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "Button2"
    android:background = "@color/black"
    android:textColor = "@color/white" />

ваша ошибка в том, что вы положили

 Button1 = findViewById(R.id.tg_btn2);
Button2 = findViewById(R.id.tg_btn1);

в методах buttonOne и buttonTwo, и это похоже на то, что вы создаете новые кнопки и работаете с ними выведите эти две строки и вставьте метод onStart следующим образом

@Override
public void onStart() {
    super.onStart();
    Button1 = getActivity().findViewById(R.id.tg_btn2);
    Button2 = getActivity().findViewById(R.id.tg_btn1);
}

и удалите их с buttonOne и buttonTwo OnClick

я надеюсь, что это решит вашу проблему и будет полезно (:

Другие вопросы по теме