2 votes

Comment choisir l'activité de départ en fonction de la condition

J'ai 4 boutons radio comme ci-dessous et je veux sélectionner seulement 1 des 4 choix et aussi une fois après que l'utilisateur ne peut pas revenir en arrière pour changer les choix qu'il a remplis....... et quand l'application s'ouvre l'utilisateur devrait être dirigé vers l'activité remplie par son choix. Comment dois-je m'y prendre ? Merci.

RadioButton FourthGrade = (RadioButton) findViewById(R.id.grade_4th);

            FourthGrade.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(CourseSelectionActivity.this, Home.class);
                    startActivity(intent);
                }
            });

1voto

earthw0rmjim Points 11873

Vous pourriez créer un "navigateur" Activity comme point d'entrée de votre application, quelque chose comme ça :

public class NavigatorActivity extends AppCompatActivity {

    public static final String KEY_CHOICE = "choice";

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // fetch the choice of the user, or return -1 if there is no choice yet
        SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);
        int choice = prefs.getInt(KEY_CHOICE, -1);
        Intent intent = createIntentBasedOnChoice(this, choice);

        startActivity(intent);
        finish();
    }

    // this method returns an Intent based on the passed choice parameter
    public static Intent createIntentBasedOnChoice(Context context, int choice) {
        Intent intent;

        switch (choice) {
            case 1: {
                intent = new Intent(context, FirstActivity.class);
                break;
            }
            case 2: {
                intent = new Intent(context, SecondActivity.class);
                break;
            }
            case 3: {
                intent = new Intent(context, ThirdActivity.class);
                break;
            }
            case 4: {
                intent = new Intent(context, FourthActivity.class);
                break;
            }
            default: {
                // if there is no choice yet, start the ChoiceActivity
                intent = new Intent(context, ChoiceActivity.class);
                break;
            }
        }
        return intent;
    }
}

Cela permettrait de naviguer vers l'une des quatre activités en fonction du choix précédent de l'utilisateur. Si l'utilisateur n'a pas encore fait son choix, il se rendra à l'activité suivante ChoiceActivity .

Une mise en page de base pour ChoiceActivity :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RadioGroup
        android:id="@+id/group_choices"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton
            android:id="@+id/button_choice1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Choice 1" />

        <RadioButton
            android:id="@+id/button_choice2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Choice 2" />

        <RadioButton
            android:id="@+id/button_choice3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Choice 3" />

        <RadioButton
            android:id="@+id/button_choice4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Choice 4" />

    </RadioGroup>

    <Button
        android:id="@+id/button_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is my choice!" />
</LinearLayout>

Et son code ressemblerait à quelque chose comme ça :

public class ChoiceActivity extends AppCompatActivity {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_choice);

        final RadioGroup choiceGroup = (RadioGroup) findViewById(
            R.id.group_choices);
        Button submitButton = (Button) findViewById(R.id.button_submit);

        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int choice;

                switch (choiceGroup.getCheckedRadioButtonId()) {
                    case R.id.button_choice1: {
                        choice = 1;
                        break;
                    }
                    case R.id.button_choice2: {
                        choice = 2;
                        break;
                    }
                    case R.id.button_choice3: {
                        choice = 3;
                        break;
                    }
                    case R.id.button_choice4: {
                        choice = 4;
                        break;
                    }
                    default: {
                        choice = 1;
                        break;
                    }
                }

                // saving the choice of the user
                PreferenceManager
                    .getDefaultSharedPreferences(ChoiceActivity.this)
                    .edit()
                    .putInt(NavigatorActivity.KEY_CHOICE, choice)
                    .apply();

                Intent intent = NavigatorActivity
                    .createIntentBasedOnChoice(ChoiceActivity.this, choice);

                startActivity(intent);
                finish();
            }
        });
    }
}

Cela permettra de sauvegarder le choix de l'utilisateur dans SharedPreferences et naviguer vers l'étape appropriée de la Activity .

Il ne s'agit que d'un exemple très basique pour vous aider à démarrer, adaptez-le en fonction de vos besoins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X