Skip to content

Commit 3d65cbb

Browse files
Persist onboarding default tab selection
1 parent fc4872b commit 3d65cbb

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/onboarding/OnboardingViewModel.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ public void setDefaultTab(String value) {
6262
prefs.edit().putString(context.getString(R.string.key_default_tab), value).apply();
6363
}
6464

65+
public String getDefaultTab() {
66+
String[] values = context.getResources().getStringArray(R.array.preference_default_tab_values);
67+
return prefs.getString(context.getString(R.string.key_default_tab), values[0]);
68+
}
69+
6570
public void setBottomNavLabels(String value) {
6671
prefs.edit().putString(context.getString(R.string.key_bottom_navigation_bar_labels), value).apply();
6772
}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/onboarding/StartPageFragment.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,17 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
4848
binding.optionSecond.radioButton.setId(View.generateViewId());
4949
binding.optionThird.radioButton.setId(View.generateViewId());
5050

51-
selectOption(0);
51+
String[] values = getResources().getStringArray(R.array.preference_default_tab_values);
52+
String savedValue = viewModel.getDefaultTab();
53+
int selectedIndex = 0;
54+
for (int i = 0; i < values.length; i++) {
55+
if (values[i].equals(savedValue)) {
56+
selectedIndex = i;
57+
break;
58+
}
59+
}
60+
61+
selectOption(selectedIndex);
5262

5363
binding.cardFirst.setOnClickListener(v -> selectOption(0));
5464
binding.cardSecond.setOnClickListener(v -> selectOption(1));
@@ -63,17 +73,23 @@ private void selectOption(int index) {
6373
binding.optionFirst.radioButton.setChecked(index == 0);
6474
binding.optionSecond.radioButton.setChecked(index == 1);
6575
binding.optionThird.radioButton.setChecked(index == 2);
76+
77+
if (viewModel != null) {
78+
String[] values = getResources().getStringArray(R.array.preference_default_tab_values);
79+
if (index >= 0 && index < values.length) {
80+
viewModel.setDefaultTab(values[index]);
81+
}
82+
}
6683
}
6784

6885
public void saveSelection() {
69-
String[] values = getResources().getStringArray(R.array.preference_default_tab_values);
70-
String value = values[0];
7186
if (binding.optionSecond.radioButton.isChecked()) {
72-
value = values[1];
87+
selectOption(1);
7388
} else if (binding.optionThird.radioButton.isChecked()) {
74-
value = values[2];
89+
selectOption(2);
90+
} else {
91+
selectOption(0);
7592
}
76-
viewModel.setDefaultTab(value);
7793
}
7894

7995
@Override

0 commit comments

Comments
 (0)