Skip to content

Commit 1309583

Browse files
Refactor and update UI elements
This commit introduces several changes: - Refactored `MainUiState` and test `FakeHomeRepository` & `FakeQuizLocalDataSource` to use Java records. - Updated various icons (`ic_arrow_back`, `ic_arrow_forward`, `ic_close`, `ic_security`) with new path data and added `ic_open_new`. - Modified layout files for onboarding (`fragment_onboarding_data.xml`, `fragment_onboarding_done.xml`, `activity_onboarding.xml`) to adjust icon gravity and replace a LinearLayout with a MaterialButton. - Updated text strings and removed unused ones in `strings.xml`. - Renamed `getDailyTip()` to `dailyTip()` in `HomeRepository` and its implementations. - Added FIXME comments for potential null pointer exceptions, deprecated methods, and unused code in several Java files. - Changed GitHub username in `OpenSourceLicensesUtils.java`. - Updated card view shape appearance in `fragment_onboarding_selection.xml`. - Simplified fragment creation in `OnboardingActivity` using an enhanced switch.
1 parent 8c9fda9 commit 1309583

File tree

30 files changed

+116
-160
lines changed

30 files changed

+116
-160
lines changed

app/src/main/java/com/d4rk/androidtutorials/java/ads/views/NativeAdBannerView.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public NativeAdBannerView(@NonNull Context context, @Nullable AttributeSet attrs
3939

4040
private void init(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
4141
if (attrs != null) {
42-
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.NativeAdBannerView, defStyleAttr, 0);
42+
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.NativeAdBannerView, defStyleAttr, 0); // FIXME: 'TypedArray' used without 'try'-with-resources statement
4343
layoutRes = a.getResourceId(R.styleable.NativeAdBannerView_nativeAdLayout, R.layout.ad_home_banner_large);
4444
a.recycle();
4545
}
@@ -49,7 +49,7 @@ public void loadAd(AdRequest adRequest) {
4949
loadAd(adRequest, null);
5050
}
5151

52-
public void loadAd(AdRequest adRequest, @Nullable AdListener listener) {
52+
public void loadAd(AdRequest adRequest, @Nullable AdListener listener) { // FIXME: Parameter 'adRequest' is never used
5353
NativeAdLoader.load(getContext(), this, layoutRes, listener);
5454
}
5555

app/src/main/java/com/d4rk/androidtutorials/java/data/repository/DefaultHomeRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public String getAppPlayStoreUrl(String packageName) {
2828
}
2929

3030
@Override
31-
public String getDailyTip() {
31+
public String dailyTip() {
3232
return localDataSource.getDailyTip();
3333
}
3434

app/src/main/java/com/d4rk/androidtutorials/java/data/repository/HomeRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public interface HomeRepository {
1313

1414
String getAppPlayStoreUrl(String packageName);
1515

16-
String getDailyTip();
16+
String dailyTip();
1717

1818
void fetchPromotedApps(PromotedAppsCallback callback);
1919

app/src/main/java/com/d4rk/androidtutorials/java/domain/home/GetDailyTipUseCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ public GetDailyTipUseCase(HomeRepository repository) {
1616
* Returns today's tip string.
1717
*/
1818
public String invoke() {
19-
return repository.getDailyTip();
19+
return repository.dailyTip();
2020
}
2121
}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/data/room/RoomActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ protected void onDestroy() {
8989

9090
private static class NotesAdapter extends ListAdapter<Note, NotesAdapter.NoteViewHolder> {
9191
private static final DiffUtil.ItemCallback<Note> DIFF_CALLBACK =
92-
new DiffUtil.ItemCallback<Note>() {
92+
new DiffUtil.ItemCallback<>() {
9393
@Override
9494
public boolean areItemsTheSame(@NonNull Note oldItem, @NonNull Note newItem) {
9595
return oldItem.id == newItem.id;

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/networking/retrofit/RetrofitActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4444

4545
binding.buttonFetch.setOnClickListener(v -> {
4646
binding.buttonFetch.setEnabled(false);
47-
api.getTodo().enqueue(new Callback<Todo>() {
47+
api.getTodo().enqueue(new Callback<>() {
4848
@Override
49-
public void onResponse(Call<Todo> call, Response<Todo> response) {
49+
public void onResponse(Call<Todo> call, Response<Todo> response) { // FIXME: Not annotated parameter overrides @EverythingIsNonNull parameter
5050
if (response.isSuccessful() && response.body() != null) {
5151
binding.textViewResult.setText(response.body().title);
5252
} else {
@@ -56,7 +56,7 @@ public void onResponse(Call<Todo> call, Response<Todo> response) {
5656
}
5757

5858
@Override
59-
public void onFailure(Call<Todo> call, Throwable t) {
59+
public void onFailure(Call<Todo> call, Throwable t) { // FIXME: Not annotated parameter overrides @EverythingIsNonNull parameter
6060
binding.textViewResult.setText(R.string.snack_general_error);
6161
binding.buttonFetch.setEnabled(true);
6262
}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/start/AndroidStartProjectActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ protected void onCreate(Bundle savedInstanceState) {
2525
edgeToEdgeDelegate.applyEdgeToEdge(binding.constraintLayout);
2626

2727
setSupportActionBar(binding.topAppBar);
28-
binding.topAppBar.setNavigationOnClickListener(v -> onBackPressed());
28+
binding.topAppBar.setNavigationOnClickListener(v -> onBackPressed()); // FIXME: 'onBackPressed()' is deprecated
2929
binding.topAppBar.setOnMenuItemClickListener(item -> {
3030
if (item.getItemId() == R.id.action_share) {
3131
Intent sharingIntent = new Intent(Intent.ACTION_SEND);

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/textboxes/passwordbox/PasswordBoxActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ private void hidePassword() {
6262

6363
private void addKeyListener() {
6464
binding.buttonShowPassword.setOnClickListener(v ->
65-
Snackbar.make(binding.getRoot(), binding.editText.getText(), Snackbar.LENGTH_LONG).show());
65+
Snackbar.make(binding.getRoot(), binding.editText.getText(), Snackbar.LENGTH_LONG).show()); // FIXME: Argument 'binding.editText.getText()' might be null
6666
}
6767

6868

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ private void shareTip(String tip) {
107107
private void shareApp(com.d4rk.androidtutorials.java.data.model.PromotedApp app) {
108108
android.content.Intent sharingIntent = new android.content.Intent(android.content.Intent.ACTION_SEND);
109109
sharingIntent.setType("text/plain");
110-
String shareLink = homeViewModel.getPromotedAppIntent(app.packageName()).getData().toString();
110+
String shareLink = homeViewModel.getPromotedAppIntent(app.packageName()).getData().toString(); // FIXME: Method invocation 'toString' may produce 'NullPointerException'
111111
String shareMessage = getString(com.d4rk.androidtutorials.java.R.string.share_message, shareLink);
112112
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareMessage);
113113
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(com.d4rk.androidtutorials.java.R.string.share_subject));

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,21 @@ public void onResume(@NonNull LifecycleOwner owner) {
7676
if (ConsentUtils.canShowAds(MainActivity.this)) {
7777
if (mBinding.adView.getVisibility() != View.VISIBLE) {
7878
MobileAds.initialize(MainActivity.this);
79-
mBinding.adPlaceholder.setVisibility(View.GONE);
79+
mBinding.adPlaceholder.setVisibility(View.GONE); // FIXME: Method invocation 'setVisibility' may produce 'NullPointerException'
8080
mBinding.adView.setVisibility(View.VISIBLE);
8181
mBinding.adView.loadAd(new AdRequest.Builder().build());
8282
}
8383
} else {
8484
mBinding.adView.setVisibility(View.GONE);
85-
mBinding.adPlaceholder.setVisibility(View.VISIBLE);
85+
mBinding.adPlaceholder.setVisibility(View.VISIBLE); // FIXME: Method invocation 'setVisibility' may produce 'NullPointerException'
8686
}
8787
}
8888
}
8989
};
9090
private MainViewModel mainViewModel;
9191
private NavController navController;
9292
private int currentNavIndex;
93-
private AppUpdateNotificationsManager appUpdateNotificationsManager;
93+
private AppUpdateNotificationsManager appUpdateNotificationsManager; // FIXME: Private field 'appUpdateNotificationsManager' is assigned but never accessed
9494
private AppUpdateManager appUpdateManager;
9595
private InstallStateUpdatedListener installStateUpdatedListener;
9696
private long backPressedTime;
@@ -173,24 +173,24 @@ private void observeViewModel() {
173173
EdgeToEdgeDelegate edgeToEdgeDelegate = new EdgeToEdgeDelegate(this);
174174
NavigationBarView navBarView = (NavigationBarView) mBinding.navView;
175175
if (useRail) {
176-
mBinding.navRail.setVisibility(View.VISIBLE);
176+
mBinding.navRail.setVisibility(View.VISIBLE); // FIXME: Method invocation 'setVisibility' may produce 'NullPointerException'
177177
navBarView.setVisibility(View.GONE);
178178
edgeToEdgeDelegate.applyEdgeToEdge(mBinding.container);
179179
} else {
180-
mBinding.navRail.setVisibility(View.GONE);
180+
mBinding.navRail.setVisibility(View.GONE); // FIXME: Method invocation 'setVisibility' may produce 'NullPointerException'
181181
navBarView.setVisibility(View.VISIBLE);
182182
edgeToEdgeDelegate.applyEdgeToEdgeBottomBar(mBinding.container, navBarView);
183183

184-
navBarView.setLabelVisibilityMode(uiState.getBottomNavVisibility());
184+
navBarView.setLabelVisibilityMode(uiState.bottomNavVisibility());
185185
if (mBinding.adView != null) {
186186
if (ConsentUtils.canShowAds(this)) {
187187
MobileAds.initialize(this);
188-
mBinding.adPlaceholder.setVisibility(View.GONE);
188+
mBinding.adPlaceholder.setVisibility(View.GONE); // FIXME: Method invocation 'setVisibility' may produce 'NullPointerException'
189189
mBinding.adView.setVisibility(View.VISIBLE);
190190
mBinding.adView.loadAd(new AdRequest.Builder().build());
191191
} else {
192192
mBinding.adView.setVisibility(View.GONE);
193-
mBinding.adPlaceholder.setVisibility(View.VISIBLE);
193+
mBinding.adPlaceholder.setVisibility(View.VISIBLE); // FIXME: Method invocation 'setVisibility' may produce 'NullPointerException'
194194
}
195195
}
196196
}
@@ -200,13 +200,13 @@ private void observeViewModel() {
200200
if (navHostFragment != null) {
201201
navController = navHostFragment.getNavController();
202202
NavGraph navGraph = navController.getNavInflater().inflate(R.navigation.mobile_navigation);
203-
navGraph.setStartDestination(uiState.getDefaultNavDestination());
203+
navGraph.setStartDestination(uiState.defaultNavDestination());
204204
navController.setGraph(navGraph);
205205

206206
navOrder.put(R.id.navigation_home, 0);
207207
navOrder.put(R.id.navigation_android_studio, 1);
208208
navOrder.put(R.id.navigation_about, 2);
209-
currentNavIndex = navOrder.get(navController.getCurrentDestination().getId());
209+
currentNavIndex = navOrder.get(navController.getCurrentDestination().getId()); // FIXME: Method invocation 'getId' may produce 'NullPointerException'
210210

211211
NavOptions forwardOptions = new NavOptions.Builder()
212212
.setEnterAnim(R.anim.fragment_spring_enter)
@@ -256,13 +256,13 @@ private void observeViewModel() {
256256
});
257257
}
258258

259-
if (uiState.isThemeChanged()) {
259+
if (uiState.themeChanged()) {
260260
recreate();
261261
}
262262
});
263263

264264
mainViewModel.getLoadingState().observe(this, isLoading ->
265-
mBinding.progressBar.setVisibility(Boolean.TRUE.equals(isLoading) ? View.VISIBLE : View.GONE));
265+
mBinding.progressBar.setVisibility(Boolean.TRUE.equals(isLoading) ? View.VISIBLE : View.GONE)); // FIXME: Method invocation 'setVisibility' may produce 'NullPointerException'
266266
}
267267

268268
private void setupUpdateNotifications() {
@@ -285,7 +285,8 @@ public boolean onOptionsItemSelected(android.view.MenuItem item) {
285285
return super.onOptionsItemSelected(item);
286286
}
287287

288-
private void checkForImmediateUpdate() {
288+
// TODO: Call on onResume
289+
private void checkForImmediateUpdate() { // FIXME: Private method 'checkForImmediateUpdate()' is never used
289290
appUpdateManager
290291
.getAppUpdateInfo()
291292
.addOnSuccessListener(

0 commit comments

Comments
 (0)