setSelected () на ToggleButton не меняет своего внешнего вида - PullRequest
0 голосов
/ 01 мая 2018

У меня есть ToggleButton в подклассе Fragment, который я могу вызвать только setSelected () в первый раз - после этого setSelected () меняет свойство при отладке с помощью isSelected (), однако внешний вид самого ToggleButton делает не меняется.

В моем AddEditTripFragment расширяется класс Fragment:

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

    ...

    mondayButton = v.findViewById(R.id.mondayButton);
    final Trip myTrip = ((MainActivity)getActivity()).tripToEdit;
    // Check if tripToEdit is not null, so we can pull the values to populate the date/time
    if (myTrip != null) {
        ...
        mondayButton.setChecked(myTrip.isMonday());
        mondayButton.setSelected(myTrip.isMonday());
        Log.d(TAG, "onCreateView: myTrip.Monday() = " + myTrip.isMonday());
        Log.d(TAG, "onCreateView: mondayButton.isSelected() = " + mondayButton.isSelected());
        ...
    }

Выход:

... onCreateView: myTrip.Monday() = true
... onCreateView: mondayButton.isSelected() = true

И все же внешний вид ToggleButton все еще "выключен".

Я еще не добавил слушателей в ToggleButton.

Что я могу сделать, чтобы ToggleButton изменил внешний вид, когда я делаю .setSelected () на нем?

1 Ответ

0 голосов
/ 01 мая 2018

После долгих попыток по-разному я нашел единственное решение, которое работало в проблеме Github: https://github.com/navasmdc/MaterialDesignLibrary/issues/199#issuecomment-89126286

Заменить

mondayButton.setChecked(myTrip.isMonday());
mondayButton.setSelected(myTrip.isMonday());

Для этого:

mondayButton.post(new Runnable() {
    @Override
    public void run() {
        mondayButton.setChecked(myTrip.isMonday());
        mondayButton.setSelected(myTrip.isMonday());
    }
});
...