Как реализовать валидацию в операторе switch? - PullRequest
0 голосов
/ 21 мая 2019

Простой switch оператор со следующей кнопкой в ​​качестве окончательного варианта. Я хочу, чтобы пользователь продолжал выбирать изображение в операторе switch. Я понятия не имею, как написать что-то, чтобы пользователь не нажимал следующую кнопку и переходил к следующему действию, не делая выбор из оператора switch. Код ниже.

    public void onClick(View v) {

    SharedPreferences.Editor editorWorkout = workoutPref.edit();

    // get the constraint layout from its ID.
    ConstraintLayout mConstraintLayout = getView().findViewById(R.id.FragmentWorkoutMood1);

    switch (v.getId()) {
        case R.id.excitedFace:
            mConstraintLayout.setBackgroundResource(R.mipmap.background_clouds_excited);
            editorWorkout.putInt("excitedkey", EXCITED.getId());
            editorWorkout.commit();
            break;
        case R.id.happyFace:
            mConstraintLayout.setBackgroundResource(R.mipmap.background_clouds_happy);
            editorWorkout.putInt("happykey", HAPPY.getId());
            editorWorkout.commit();
            break;
        case R.id.fineFace:
                 mConstraintLayout.setBackgroundResource(R.mipmap.background_clouds_fine);
            editorWorkout.putInt("finekey", FINE.getId());
            editorWorkout.commit();
            break;
        case R.id.nextBtnMoodPage:
            Intent intent = new Intent(getActivity(),   WorkoutAutomaticThoughtActivity.class);
            startActivity(intent);
    }

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Вы можете запустить actvity снаружи оператора switch Просто напишите

Кнопка buttonNext. = findViewById ..

buttonNext.SetOnClickListener ...

0 голосов
/ 22 мая 2019

Вам необходимо отключить действие, которое nextBtnMoodPage выполняет, пока пользователь не выберет любой из других параметров.Сделайте это используя простой логический тип.См. Ниже:

// Inside the class itself
private boolean hasSelected = false;

public void onClick(View v) {

    SharedPreferences.Editor editorWorkout = workoutPref.edit();

    // get the constraint layout from its ID.
    ConstraintLayout mConstraintLayout = getView().findViewById(R.id.FragmentWorkoutMood1);

    switch (v.getId()) {
        case R.id.excitedFace:
            mConstraintLayout.setBackgroundResource(R.mipmap.background_clouds_excited);
            editorWorkout.putInt("excitedkey", EXCITED.getId());
            editorWorkout.commit();
            hasSelected = true;
            break;
        case R.id.happyFace:
            mConstraintLayout.setBackgroundResource(R.mipmap.background_clouds_happy);
            editorWorkout.putInt("happykey", HAPPY.getId());
            editorWorkout.commit();
            hasSelected = true;
            break;
        case R.id.fineFace:
            mConstraintLayout.setBackgroundResource(R.mipmap.background_clouds_fine);
            editorWorkout.putInt("finekey", FINE.getId());
            editorWorkout.commit();
            hasSelected = true;
            break;
        case R.id.nextBtnMoodPage:
            if(hasSelected){
                Intent intent = new Intent(getActivity(),   WorkoutAutomaticThoughtActivity.class);
                startActivity(intent);
            }
    }
}

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

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

Удачи!

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