Skip to content

Commit e89166e

Browse files
Refactor: Replace individual code-view activities with a shared LessonCodeTabsActivity
This commit refactors the "show code" functionality by introducing a single, reusable `LessonCodeTabsActivity`. This new activity replaces numerous boilerplate `...CodeActivity` classes that all performed the same function: displaying code and layout tabs for a specific lesson. Key changes: - A new generic `LessonCodeTabsActivity` is created to display fragments in a tabbed layout, configured via an `Intent`. - All individual `...CodeActivity` files (e.g., `ButtonsCodeActivity`, `RoomCodeActivity`) have been deleted. - Lesson activities (e.g., `ButtonsActivity`, `RoomActivity`) are updated to use the new shared activity, simplifying their intent creation logic. - The `AndroidManifest.xml` has been cleaned up by removing declarations for the deleted activities and adding the new shared one. - The app theme is updated to `AppThemeActionBar`.
1 parent ae5f161 commit e89166e

22 files changed

+423
-838
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 8 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
android:resizeableActivity="true"
3737
android:roundIcon="@mipmap/ic_launcher"
3838
android:supportsRtl="true"
39-
android:theme="@style/FitSystemWindowsTheme"
39+
android:theme="@style/AppThemeActionBar"
4040
tools:targetApi="33">
4141

4242
<activity
@@ -77,6 +77,12 @@
7777
android:exported="false"
7878
android:parentActivityName=".ui.screens.main.MainActivity" />
7979

80+
<activity
81+
android:name=".ui.screens.android.lessons.common.LessonCodeTabsActivity"
82+
android:exported="false"
83+
android:label="@string/app_name"
84+
android:parentActivityName=".ui.screens.main.MainActivity" />
85+
8086
<activity
8187
android:name=".ui.screens.android.lessons.buttons.radio.RadioButtonsActivity"
8288
android:exported="false"
@@ -98,21 +104,11 @@
98104
android:exported="false"
99105
android:label="@string/image_view"
100106
android:parentActivityName=".ui.screens.main.MainActivity" />
101-
<activity
102-
android:name=".ui.screens.android.lessons.views.images.ImagesCodeActivity"
103-
android:exported="false"
104-
android:label="@string/image_view"
105-
android:parentActivityName=".ui.screens.android.lessons.views.images.ImagesActivity" />
106107
<activity
107108
android:name=".ui.screens.android.lessons.alerts.snackbar.SnackBarActivity"
108109
android:exported="false"
109110
android:label="@string/snack_bar"
110111
android:parentActivityName=".ui.screens.main.MainActivity" />
111-
<activity
112-
android:name=".ui.screens.android.lessons.clocks.clock.ClockCodeActivity"
113-
android:exported="false"
114-
android:label="@string/clocks"
115-
android:parentActivityName=".ui.screens.main.MainActivity" />
116112
<activity
117113
android:name=".ui.screens.android.lessons.clocks.clock.ClockActivity"
118114
android:exported="false"
@@ -133,11 +129,6 @@
133129
android:exported="false"
134130
android:label="@string/spinner"
135131
android:parentActivityName=".ui.screens.main.MainActivity" />
136-
<activity
137-
android:name=".ui.screens.android.lessons.views.spinner.SpinnerCodeActivity"
138-
android:exported="false"
139-
android:label="@string/spinner"
140-
android:parentActivityName=".ui.screens.android.lessons.views.spinner.SpinnerActivity" />
141132

142133
<activity-alias
143134
android:name="com.d4rk.androidtutorials.java.ui.android.webviews.WebViewActivity"
@@ -149,11 +140,6 @@
149140
android:exported="false"
150141
android:label="@string/progress_bar"
151142
android:parentActivityName=".ui.screens.main.MainActivity" />
152-
<activity
153-
android:name=".ui.screens.android.lessons.progress.progressbar.ProgressBarCodeActivity"
154-
android:exported="false"
155-
android:label="@string/progress_bar"
156-
android:parentActivityName=".ui.screens.android.lessons.progress.progressbar.ProgressBarActivity" />
157143
<activity
158144
android:name=".ui.screens.android.lessons.notifications.simple.SimpleNotificationActivity"
159145
android:exported="false"
@@ -211,41 +197,21 @@
211197
android:exported="false"
212198
android:label="@string/history_of_android"
213199
android:parentActivityName=".ui.screens.main.MainActivity" />
214-
<activity
215-
android:name=".ui.screens.android.lessons.buttons.buttons.ButtonsCodeActivity"
216-
android:exported="false"
217-
android:label="@string/buttons"
218-
android:parentActivityName=".ui.screens.main.MainActivity" />
219200
<activity
220201
android:name=".ui.screens.android.lessons.layouts.linear.LinearLayoutActivity"
221202
android:exported="false"
222203
android:label="@string/linear_layout"
223204
android:parentActivityName=".ui.screens.main.MainActivity" />
224-
<activity
225-
android:name=".ui.screens.android.lessons.layouts.linear.LinearLayoutCodeActivity"
226-
android:exported="false"
227-
android:label="@string/linear_layout"
228-
android:parentActivityName=".ui.screens.android.lessons.layouts.linear.LinearLayoutActivity" />
229205
<activity
230206
android:name=".ui.screens.android.lessons.layouts.relative.RelativeLayoutActivity"
231207
android:exported="false"
232208
android:label="@string/relative_layout"
233209
android:parentActivityName=".ui.screens.main.MainActivity" />
234-
<activity
235-
android:name=".ui.screens.android.lessons.layouts.relative.RelativeLayoutCodeActivity"
236-
android:exported="false"
237-
android:label="@string/relative_layout"
238-
android:parentActivityName=".ui.screens.android.lessons.layouts.relative.RelativeLayoutActivity" />
239210
<activity
240211
android:name=".ui.screens.android.lessons.layouts.table.TableLayoutActivity"
241212
android:exported="false"
242213
android:label="@string/table_layout"
243214
android:parentActivityName=".ui.screens.main.MainActivity" />
244-
<activity
245-
android:name=".ui.screens.android.lessons.layouts.table.TableLayoutCodeActivity"
246-
android:exported="false"
247-
android:label="@string/table_layout"
248-
android:parentActivityName=".ui.screens.android.lessons.layouts.table.TableLayoutActivity" />
249215
<activity
250216
android:name=".ui.screens.android.lessons.views.grid.GirdViewActivity"
251217
android:exported="false"
@@ -308,30 +274,19 @@
308274
android:label="@string/room_database"
309275
android:parentActivityName=".ui.screens.main.MainActivity" />
310276

311-
<activity
312-
android:name=".ui.screens.android.lessons.data.room.RoomCodeActivity"
313-
android:exported="false"
314-
android:label="@string/room_database"
315-
android:parentActivityName=".ui.screens.android.lessons.data.room.RoomActivity" />
316277

317278
<activity
318279
android:name=".ui.screens.android.lessons.networking.retrofit.RetrofitActivity"
319280
android:exported="false"
320281
android:label="@string/retrofit"
321282
android:parentActivityName=".ui.screens.main.MainActivity" />
322283

323-
<activity
324-
android:name=".ui.screens.android.lessons.networking.retrofit.RetrofitCodeActivity"
325-
android:exported="false"
326-
android:label="@string/retrofit"
327-
android:parentActivityName=".ui.screens.android.lessons.networking.retrofit.RetrofitActivity" />
328284

329285
<activity
330286
android:name=".ui.screens.settings.SettingsActivity"
331287
android:exported="false"
332288
android:label="@string/settings"
333-
android:parentActivityName=".ui.screens.settings.SettingsActivity"
334-
android:theme="@style/FitSystemWindowsTheme">
289+
android:parentActivityName=".ui.screens.settings.SettingsActivity">
335290
<intent-filter>
336291
<action android:name="android.intent.action.APPLICATION_PREFERENCES" />
337292
</intent-filter>

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/buttons/buttons/ButtonsActivity.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.d4rk.androidtutorials.java.ui.screens.android.lessons.buttons.buttons;
22

3-
import android.content.Intent;
43
import android.os.Bundle;
54
import android.os.Handler;
65
import android.os.Looper;
@@ -9,10 +8,14 @@
98
import com.d4rk.androidtutorials.java.ads.AdUtils;
109
import com.d4rk.androidtutorials.java.databinding.ActivityButtonsBinding;
1110
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
11+
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.buttons.buttons.tabs.ButtonsTabCodeFragment;
12+
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.buttons.buttons.tabs.ButtonsTabLayoutFragment;
13+
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.common.LessonCodeTabsActivity;
1214
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1315
import com.google.android.material.snackbar.Snackbar;
1416

1517
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
18+
import java.util.Arrays;
1619

1720
public class ButtonsActivity extends UpNavigationActivity {
1821
private final Handler handler = new Handler(Looper.getMainLooper());
@@ -49,7 +52,21 @@ protected void onCreate(Bundle savedInstanceState) {
4952
binding.floatingButtonSecondary.setOnClickListener(view -> Snackbar.make(binding.getRoot(), getString(R.string.floating_button_secondary_icon) + " " + getString(R.string.snack_bar_clicked), Snackbar.LENGTH_SHORT).show());
5053
binding.floatingButtonSurface.setOnClickListener(view -> Snackbar.make(binding.getRoot(), getString(R.string.floating_button_surface_icon) + " " + getString(R.string.snack_bar_clicked), Snackbar.LENGTH_SHORT).show());
5154
binding.floatingButtonTertiary.setOnClickListener(view -> Snackbar.make(binding.getRoot(), getString(R.string.floating_button_tertiary_icon) + " " + getString(R.string.snack_bar_clicked), Snackbar.LENGTH_SHORT).show());
52-
binding.floatingButtonShowSyntax.setOnClickListener(v -> startActivity(new Intent(ButtonsActivity.this, ButtonsCodeActivity.class)));
55+
binding.floatingButtonShowSyntax.setOnClickListener(v -> startActivity(
56+
LessonCodeTabsActivity.createIntent(
57+
ButtonsActivity.this,
58+
R.string.buttons,
59+
Arrays.asList(
60+
LessonCodeTabsActivity.PageSpec.of(
61+
ButtonsTabCodeFragment.class,
62+
getString(R.string.code_java)
63+
),
64+
LessonCodeTabsActivity.PageSpec.of(
65+
ButtonsTabLayoutFragment.class,
66+
getString(R.string.layout_xml)
67+
)
68+
)
69+
)));
5370
handler.postDelayed(() -> binding.floatingButtonShowSyntax.shrink(), 5000);
5471
}
5572

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/buttons/buttons/ButtonsCodeActivity.java

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

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/clocks/clock/ClockActivity.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.d4rk.androidtutorials.java.ui.screens.android.lessons.clocks.clock;
22

3-
import android.content.Intent;
43
import android.os.Bundle;
54
import android.os.Handler;
65
import android.os.Looper;
@@ -9,9 +8,13 @@
98
import com.d4rk.androidtutorials.java.ads.AdUtils;
109
import com.d4rk.androidtutorials.java.databinding.ActivityClockBinding;
1110
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
11+
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.clocks.clock.tabs.ClockTabCodeFragment;
12+
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.clocks.clock.tabs.ClockTabLayoutFragment;
13+
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.common.LessonCodeTabsActivity;
1214
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1315

1416
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
17+
import java.util.Arrays;
1518

1619
public class ClockActivity extends UpNavigationActivity {
1720
private final Handler handler = new Handler(Looper.getMainLooper());
@@ -31,7 +34,21 @@ protected void onCreate(Bundle savedInstanceState) {
3134

3235

3336
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
34-
binding.floatingButtonShowSyntax.setOnClickListener(view -> startActivity(new Intent(this, ClockCodeActivity.class)));
37+
binding.floatingButtonShowSyntax.setOnClickListener(view -> startActivity(
38+
LessonCodeTabsActivity.createIntent(
39+
this,
40+
R.string.clocks,
41+
Arrays.asList(
42+
LessonCodeTabsActivity.PageSpec.of(
43+
ClockTabCodeFragment.class,
44+
getString(R.string.code_java)
45+
),
46+
LessonCodeTabsActivity.PageSpec.of(
47+
ClockTabLayoutFragment.class,
48+
getString(R.string.layout_xml)
49+
)
50+
)
51+
)));
3552
handler.postDelayed(() -> binding.floatingButtonShowSyntax.shrink(), 5000);
3653
}
3754

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/clocks/clock/ClockCodeActivity.java

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

0 commit comments

Comments
 (0)