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.