Skip to content

Commit 5be59b8

Browse files
Gracefully handle missing fonts in onboarding
1 parent 735f4b3 commit 5be59b8

File tree

1 file changed

+24
-7
lines changed
  • app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/onboarding

1 file changed

+24
-7
lines changed

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

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.d4rk.androidtutorials.java.ui.screens.onboarding;
22

3+
import android.content.res.Resources;
4+
import android.graphics.Typeface;
35
import android.os.Bundle;
6+
import android.util.Log;
47
import android.view.LayoutInflater;
58
import android.view.View;
69
import android.view.ViewGroup;
10+
import android.widget.TextView;
711

812
import androidx.annotation.NonNull;
913
import androidx.annotation.Nullable;
@@ -17,6 +21,8 @@
1721

1822
public class FontFragment extends Fragment {
1923

24+
private static final String TAG = "FontFragment";
25+
2026
private FragmentOnboardingFontBinding binding;
2127
private OnboardingViewModel viewModel;
2228
private MaterialRadioButton[] radioButtons;
@@ -53,13 +59,13 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
5359
binding.cardGoogleSansCode
5460
};
5561

56-
binding.optionAudiowide.titleText.setTypeface(ResourcesCompat.getFont(requireContext(), R.font.font_audiowide));
57-
binding.optionFiraCode.titleText.setTypeface(ResourcesCompat.getFont(requireContext(), R.font.font_fira_code));
58-
binding.optionJetbrainsMono.titleText.setTypeface(ResourcesCompat.getFont(requireContext(), R.font.font_jetbrains_mono));
59-
binding.optionNotoSansMono.titleText.setTypeface(ResourcesCompat.getFont(requireContext(), R.font.font_noto_sans_mono));
60-
binding.optionPoppins.titleText.setTypeface(ResourcesCompat.getFont(requireContext(), R.font.font_poppins));
61-
binding.optionRobotoMono.titleText.setTypeface(ResourcesCompat.getFont(requireContext(), R.font.font_roboto_mono));
62-
binding.optionGoogleSansCode.titleText.setTypeface(ResourcesCompat.getFont(requireContext(), R.font.font_google_sans_code));
62+
applyFontIfAvailable(binding.optionAudiowide.titleText, R.font.font_audiowide);
63+
applyFontIfAvailable(binding.optionFiraCode.titleText, R.font.font_fira_code);
64+
applyFontIfAvailable(binding.optionJetbrainsMono.titleText, R.font.font_jetbrains_mono);
65+
applyFontIfAvailable(binding.optionNotoSansMono.titleText, R.font.font_noto_sans_mono);
66+
applyFontIfAvailable(binding.optionPoppins.titleText, R.font.font_poppins);
67+
applyFontIfAvailable(binding.optionRobotoMono.titleText, R.font.font_roboto_mono);
68+
applyFontIfAvailable(binding.optionGoogleSansCode.titleText, R.font.font_google_sans_code);
6369

6470
for (int i = 0; i < radioButtons.length; i++) {
6571
int index = i;
@@ -80,6 +86,17 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
8086
selectOption(index);
8187
}
8288

89+
private void applyFontIfAvailable(@NonNull TextView textView, int fontResId) {
90+
try {
91+
Typeface typeface = ResourcesCompat.getFont(requireContext(), fontResId);
92+
if (typeface != null) {
93+
textView.setTypeface(typeface);
94+
}
95+
} catch (Resources.NotFoundException exception) {
96+
Log.w(TAG, "Font resource not found: " + fontResId, exception);
97+
}
98+
}
99+
83100
private void selectOption(int index) {
84101
for (int i = 0; i < radioButtons.length; i++) {
85102
radioButtons[i].setChecked(i == index);

0 commit comments

Comments
 (0)