Android, флажок не является интерактивным

#android #checkbox

#Android #флажок

Вопрос:

У меня есть флажок в моем макете. Я добавляю его динамически в код. Все выглядит нормально, но флажок не является интерактивным. Вот мой xml для флажка :

 <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@ id/pref_calendar_choose_"
    style="@style/PreferencesText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#00ffffff"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:checked="false"
    android:enabled="true"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:clickable="true"
    android:gravity="center_vertical" />
  

и вот действие с циклом, в котором я добавляю флажки :

 public class PreferencesActivity extends BaseActivity implements MenuHandler{

    private static final String TAG = PreferencesActivity.class.getSimpleName();
    private ActionBarDrawerToggle mDrawerToggle;
    List<CalendarDB> mCalendarList;

    @Bind(R.id.drawer_layout)
    DrawerLayout mDrawerLayout;
    @Bind(R.id.pref_calendar_choose)
    public LinearLayout mPrefCalendarChoose;
    @Bind(R.id.toolbar)
    Toolbar mToolbar;
    private View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CheckBox checkedTextView = (CheckBox) v;
            CalendarDB.modify(mCalendarList.get(checkedTextView.getId()), !checkedTextView.isChecked());
            BusStation.getInstance().post(new RefreshCalendarDataEvent());

        }
    };

    @Override
    protected void afterBind() {
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.open, R.string.close);
        mDrawerLayout.addDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();
        mToolbar.setNavigationIcon(R.drawable.menu);
        refreshView();
    }

    @Override
    protected int getlayoutid() {
        return R.layout.activity_preferences;
    }

    @Subscribe
    public void refreshEvents(RefreshCalendarDataEvent event) {
        refreshView();
    }

    private void refreshView() {
        String userEmail = PreferencesManager.User.getEmail();
        mCalendarList = CalendarDB.getAll(PreferencesManager.User.getEmail());
        mPrefCalendarChoose.removeAllViews();
        CheckBox checkBox;
        for (int i = 0; i < mCalendarList.size(); i  ) {
            checkBox = (CheckBox) getLayoutInflater().inflate(R.layout.item_choose_calendar, null);
            CalendarDB calendarDB = mCalendarList.get(i);
            checkBox.setChecked(calendarDB.selected);
            checkBox.setText(calendarDB.summary);
            checkBox.setId(i);
            checkBox.setOnClickListener(listener);
           /* if(calendarDB.summary.contains(userEmail)) {
                calendarDB.selected = true;
            }
            else {
                calendarDB.selected = false;
            }*/
            Log.e(TAG, "refreshView: "   calendarDB.selected );
            if (checkBox.getText() != "") ;
            mPrefCalendarChoose.addView(checkBox);

        }
    }
  

Комментарии:

1. Пожалуйста, опубликуйте полный код

2. Я отредактировал сообщение.

3. пожалуйста, попробуйте setoncheckedchanged listener

4. Я пытался. Та же проблема.

Ответ №1:

удалите focusable из вашего XML-макета

android:focusable="false" android:focusableInTouchMode="false" и он должен работать