setChecked и setSelected в CheckBox не работают - PullRequest
0 голосов
/ 22 мая 2019

У меня есть активность, которая имеет 5 фрагментов в пейджере. Я использовал

 viewPager.setOffscreenPageLimit(fragmentList.size());

чтобы иметь возможность создать весь фрагмент за один раз У меня также есть слушатель, который передаст параметр (объект) всем фрагментам, как только у меня будет newIntent.

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

вот активность

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTheme(R.style.AppTheme_PopupOverlay);
    setContentView(R.layout.activity_configurations);

    ViewPager viewPager = findViewById(R.id.container);
    TabLayout tabLayout = findViewById(R.id.tabs);

    setNdef(getIntent().getExtras());
    String type = getNdef().getString("id");

    List<Fragment> fragmentList = createFragments(type);
    SectionsPagerAdapter pagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(), fragmentList);
    viewPager.setAdapter(pagerAdapter);

    fillTableLayout(tabLayout, type);

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
    tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
    viewPager.setOffscreenPageLimit(fragmentList.size());
    readNfcDialog = createReadDialog();
    writeNfcDialog = createWriteDialog();
    readNfcDialog.show();
    setForeground();
}

 @Override
protected void onNewIntent(Intent intent) {

    super.onNewIntent(intent);


    ClassNfcTag wepTag = new ClassNfcTag(intent);
    String type = wepTag.defineClassTag();
    OmsRepeaterTag omsRepeaterTag = new OmsRepeaterTag(intent);
    byteMap = omsRepeaterTag.readTag();
   if (byteMap != null) {
   setTagOmsConfiguration(OmsConfiguration.fromByteArray(byteMap));
   for (OmsListener listener : onReceiveOmsList) {
        listener.gotOms(getInTagOmsConfiguration());
       }
   }
}

и вот один из фрагментов

    @Override
public void gotOms(OmsConfiguration configuration) {
    setConfiguration(configuration);
    if (isAdded()) {
    boolean status = getConfiguration().getDeleteRsl();
    delete.setChecked(status);
    delete.setSelected(status);

    }
}

В качестве решения я попытался использовать Switch вместо CheckBox, и он работал хорошо.

и я также попытался настроить пейджер на запуск именно с фрагмента, имеющего CheckBox, и он также работает.

viewPager.setCurrentItem(checkBoxFragmentPosition);

Я также попытался отладить код, и он показывает мне, что проверяется checBox, и когда я пытался изменить его на проверенный, прикоснувшись к нему (прогамитально он проверен, в Ui я вижу его непроверенным), он меняется сам с непроверенного на снят, а затем при следующем касании сменится на галочку.

Я буду очень рад видеть ваши решения.

1 Ответ

0 голосов
/ 12 июля 2019

только для людей, которые будут читать этот вопрос, просто это была неразрешенная ошибка в Android. Для моего случая я использовал toggleButton вместо checkBox.

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