Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 57dd872

Browse files
Merge pull request #271 from MihaiCristianCondrea/codex/fix-font-resource-not-found-crash
Handle missing fonts gracefully in FontFragment
2 parents 735f4b3 + 5be59b8 commit 57dd872

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)

AltStyle によって変換されたページ (->オリジナル) /