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 99395b9

Browse files
author
Mihai-Cristian Condrea
committed
feat: Refactor shortcuts screens to use a single activity
This commit refactors the shortcuts feature by replacing multiple individual activity classes for each shortcut category with a single, generic `ShortcutsCategoryActivity`. This new activity dynamically loads the appropriate layout and sets the title based on intent extras, significantly reducing boilerplate code. - A new `ShortcutsCategoryActivity` is introduced to display different shortcut categories. - The `ShortcutsActivity` now uses preference click listeners to launch `ShortcutsCategoryActivity` with the correct layout and title resource IDs. - Removed seven separate activity classes and their corresponding manifest entries, consolidating the logic into the new generic activity. - The `EdgeToEdgeHelper` is updated to correctly apply system bar colors based on the current theme.
1 parent 460d528 commit 99395b9

12 files changed

+111
-327
lines changed

‎app/src/main/AndroidManifest.xml‎

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -197,45 +197,15 @@
197197
android:label="@string/shortcuts"
198198
android:parentActivityName=".ui.screens.main.MainActivity" />
199199
<activity
200-
android:name=".ui.screens.android.lessons.basics.shortcuts.tabs.CodeShortcutsActivity"
200+
android:name=".ui.screens.android.lessons.basics.shortcuts.tabs.ShortcutsCategoryActivity"
201201
android:exported="false"
202-
android:label="@string/writing_code"
203-
android:parentActivityName=".ui.screens.android.lessons.basics.shortcuts.ShortcutsActivity" />
204-
<activity
205-
android:name=".ui.screens.android.lessons.basics.shortcuts.tabs.GeneralShortcutsActivity"
206-
android:exported="false"
207-
android:label="@string/general"
208-
android:parentActivityName=".ui.screens.android.lessons.basics.shortcuts.ShortcutsActivity" />
209-
<activity
210-
android:name=".ui.screens.android.lessons.basics.shortcuts.tabs.RefactoringShortcutsActivity"
211-
android:exported="false"
212-
android:label="@string/refactoring"
213-
android:parentActivityName=".ui.screens.android.lessons.basics.shortcuts.ShortcutsActivity" />
214-
<activity
215-
android:name=".ui.screens.android.lessons.basics.shortcuts.tabs.BuildShortcutsActivity"
216-
android:exported="false"
217-
android:label="@string/build_and_run"
202+
android:label="@string/shortcuts"
218203
android:parentActivityName=".ui.screens.android.lessons.basics.shortcuts.ShortcutsActivity" />
219204
<activity
220205
android:name=".ui.screens.android.lessons.clocks.chronometer.ChronometerActivity"
221206
android:exported="false"
222207
android:label="@string/chronometer"
223208
android:parentActivityName=".ui.screens.main.MainActivity" />
224-
<activity
225-
android:name=".ui.screens.android.lessons.basics.shortcuts.tabs.DebuggingShortcutsActivity"
226-
android:exported="false"
227-
android:label="@string/debugging"
228-
android:parentActivityName=".ui.screens.android.lessons.basics.shortcuts.ShortcutsActivity" />
229-
<activity
230-
android:name=".ui.screens.android.lessons.basics.shortcuts.tabs.NavigationAndSearchingShortcutsActivity"
231-
android:exported="false"
232-
android:label="@string/navigation_and_searching"
233-
android:parentActivityName=".ui.screens.android.lessons.basics.shortcuts.ShortcutsActivity" />
234-
<activity
235-
android:name=".ui.screens.android.lessons.basics.shortcuts.tabs.VersionControlShortcutsActivity"
236-
android:exported="false"
237-
android:label="@string/version_control"
238-
android:parentActivityName=".ui.screens.android.lessons.basics.shortcuts.ShortcutsActivity" />
239209
<activity
240210
android:name=".ui.screens.android.lessons.basics.history.AndroidHistory"
241211
android:exported="false"

‎app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/ShortcutsActivity.java‎

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
import android.os.Bundle;
66

77
import androidx.core.view.WindowCompat;
8+
import androidx.preference.Preference;
89
import androidx.preference.PreferenceFragmentCompat;
910

1011
import com.d4rk.androidtutorials.java.R;
1112
import com.d4rk.androidtutorials.java.ads.AdUtils;
1213
import com.d4rk.androidtutorials.java.databinding.ActivityShortcutsBinding;
1314
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
15+
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.basics.shortcuts.tabs.ShortcutsCategoryActivity;
1416
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1517

1618
public class ShortcutsActivity extends UpNavigationActivity {
@@ -30,6 +32,28 @@ public static class SettingsFragment extends PreferenceFragmentCompat {
3032
@Override
3133
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
3234
setPreferencesFromResource(R.xml.preferences_shortcuts, rootKey);
35+
setupPreference("shortcuts_general", R.layout.activity_shortcuts_general, R.string.general);
36+
setupPreference("shortcuts_refactoring", R.layout.activity_shortcuts_refractoring, R.string.refactoring);
37+
setupPreference("shortcuts_build", R.layout.activity_shortcuts_build, R.string.build_and_run);
38+
setupPreference("shortcuts_debugging", R.layout.activity_shortcuts_debugging, R.string.debugging);
39+
setupPreference("shortcuts_navigation", R.layout.activity_shortcuts_navigation_and_searching, R.string.navigation_and_searching);
40+
setupPreference("shortcuts_code", R.layout.activity_shortcuts_code, R.string.writing_code);
41+
setupPreference("shortcuts_version_control", R.layout.activity_shortcuts_version_control, R.string.version_control);
42+
}
43+
44+
private void setupPreference(String key, int layoutResId, int titleResId) {
45+
Preference preference = findPreference(key);
46+
if (preference == null) {
47+
return;
48+
}
49+
50+
preference.setOnPreferenceClickListener(pref -> {
51+
Intent intent = new Intent(requireContext(), ShortcutsCategoryActivity.class);
52+
intent.putExtra(ShortcutsCategoryActivity.EXTRA_LAYOUT_RES_ID, layoutResId);
53+
intent.putExtra(ShortcutsCategoryActivity.EXTRA_TITLE_RES_ID, titleResId);
54+
startActivity(intent);
55+
return true;
56+
});
3357
}
3458
}
35-
}
59+
}

‎app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/tabs/BuildShortcutsActivity.java‎

Lines changed: 0 additions & 24 deletions
This file was deleted.

‎app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/tabs/CodeShortcutsActivity.java‎

Lines changed: 0 additions & 24 deletions
This file was deleted.

‎app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/tabs/DebuggingShortcutsActivity.java‎

Lines changed: 0 additions & 25 deletions
This file was deleted.

‎app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/tabs/GeneralShortcutsActivity.java‎

Lines changed: 0 additions & 24 deletions
This file was deleted.

‎app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/tabs/NavigationAndSearchingShortcutsActivity.java‎

Lines changed: 0 additions & 106 deletions
This file was deleted.

‎app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/tabs/RefactoringShortcutsActivity.java‎

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.d4rk.androidtutorials.java.ui.screens.android.lessons.basics.shortcuts.tabs;
2+
3+
import android.content.Intent;
4+
import android.os.Bundle;
5+
import android.view.View;
6+
import android.view.ViewGroup;
7+
8+
import com.d4rk.androidtutorials.java.R;
9+
import com.d4rk.androidtutorials.java.ads.AdUtils;
10+
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
11+
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
12+
13+
import com.google.android.gms.ads.AdView;
14+
15+
import me.zhanghai.android.fastscroll.FastScrollScrollView;
16+
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
17+
18+
public class ShortcutsCategoryActivity extends UpNavigationActivity {
19+
20+
public static final String EXTRA_LAYOUT_RES_ID =
21+
"com.d4rk.androidtutorials.java.ui.screens.android.lessons.basics.shortcuts.tabs.EXTRA_LAYOUT_RES_ID";
22+
public static final String EXTRA_TITLE_RES_ID =
23+
"com.d4rk.androidtutorials.java.ui.screens.android.lessons.basics.shortcuts.tabs.EXTRA_TITLE_RES_ID";
24+
25+
@Override
26+
protected void onCreate(Bundle savedInstanceState) {
27+
super.onCreate(savedInstanceState);
28+
29+
Intent intent = getIntent();
30+
int layoutResId = intent.getIntExtra(EXTRA_LAYOUT_RES_ID, 0);
31+
int titleResId = intent.getIntExtra(EXTRA_TITLE_RES_ID, R.string.shortcuts);
32+
33+
if (layoutResId == 0) {
34+
finish();
35+
return;
36+
}
37+
38+
setContentView(layoutResId);
39+
setTitle(titleResId);
40+
41+
View contentView = findViewById(android.R.id.content);
42+
if (contentView instanceof ViewGroup) {
43+
View root = ((ViewGroup) contentView).getChildAt(0);
44+
if (root != null) {
45+
EdgeToEdgeHelper.applyEdgeToEdge(getWindow(), root);
46+
}
47+
}
48+
49+
AdView adView = findViewById(R.id.ad_view);
50+
if (adView != null) {
51+
AdUtils.loadBanner(adView);
52+
}
53+
54+
FastScrollScrollView scrollView = findViewById(R.id.scroll_view);
55+
if (scrollView != null) {
56+
new FastScrollerBuilder(scrollView).useMd2Style().build();
57+
}
58+
}
59+
}

0 commit comments

Comments
(0)

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