Skip to content

Commit 43085b9

Browse files
committed
Remove non-empty constructors in AssignmentsFragment & MoodleLoginDialogFragment causing crashes
1 parent eb1859c commit 43085b9

File tree

6 files changed

+24
-17
lines changed

6 files changed

+24
-17
lines changed

app/src/main/java/tk/therealsuji/vtopchennai/activities/LoginActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public void onNext(@NonNull JSONObject about) {
128128
FragmentManager fragmentManager = getSupportFragmentManager();
129129
FragmentTransaction transaction = fragmentManager.beginTransaction();
130130
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
131-
transaction.add(android.R.id.content, new UpdateDialogFragment(versionName, releaseNotes)).addToBackStack(null).commit();
131+
transaction.add(android.R.id.content, UpdateDialogFragment.newInstance(versionName, releaseNotes)).addToBackStack(null).commit();
132132
}
133133
} catch (Exception ignored) {
134134
}

app/src/main/java/tk/therealsuji/vtopchennai/activities/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ public void onNext(@NonNull JSONObject about) {
379379
FragmentManager fragmentManager = getSupportFragmentManager();
380380
FragmentTransaction transaction = fragmentManager.beginTransaction();
381381
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
382-
transaction.add(android.R.id.content, new UpdateDialogFragment(versionName, releaseNotes)).addToBackStack(null).commit();
382+
transaction.add(android.R.id.content, UpdateDialogFragment.newInstance(versionName, releaseNotes)).addToBackStack(null).commit();
383383

384384
return;
385385
}

app/src/main/java/tk/therealsuji/vtopchennai/fragments/AssignmentsFragment.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,11 +370,7 @@ private void displaySignInPage() {
370370
new EmptyStateAdapter.ButtonAttributes() {
371371
@Override
372372
public void onClick() {
373-
MoodleLoginDialogFragment moodleLoginDialogFragment = new MoodleLoginDialogFragment(o -> {
374-
displayAssignmentsPage();
375-
return null;
376-
});
377-
373+
MoodleLoginDialogFragment moodleLoginDialogFragment = new MoodleLoginDialogFragment();
378374
FragmentManager fragmentManager = requireActivity().getSupportFragmentManager();
379375
FragmentTransaction transaction = fragmentManager.beginTransaction();
380376
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
@@ -464,6 +460,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
464460
getParentFragmentManager().setFragmentResult("customInsets2", result);
465461
});
466462

463+
// Display Assignments if triggered from MoodleLoginDialogFragment
464+
getParentFragmentManager().setFragmentResultListener("displayAssignmentsPage", this, (requestKey, result) -> displayAssignmentsPage());
465+
467466
this.swipeRefreshLayout.setColorSchemeColors(MaterialColors.getColor(this.swipeRefreshLayout, R.attr.colorSurface));
468467
this.swipeRefreshLayout.setProgressBackgroundColorSchemeColor(MaterialColors.getColor(this.swipeRefreshLayout, R.attr.colorPrimary));
469468
this.swipeRefreshLayout.setOnRefreshListener(this);

app/src/main/java/tk/therealsuji/vtopchennai/fragments/dialogs/MoodleLoginDialogFragment.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.json.JSONObject;
2323

2424
import java.util.Objects;
25-
import java.util.function.Function;
2625

2726
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
2827
import io.reactivex.rxjava3.core.SingleObserver;
@@ -41,17 +40,12 @@ public class MoodleLoginDialogFragment extends DialogFragment {
4140
EditText username, password;
4241

4342
CompositeDisposable compositeDisposable = new CompositeDisposable();
44-
Function<Object, Object> callback;
4543
MoodleApi moodleApi;
4644

4745
public MoodleLoginDialogFragment() {
4846
// Required empty public constructor
4947
}
5048

51-
public MoodleLoginDialogFragment(Function<Object, Object> callback) {
52-
this.callback = callback;
53-
}
54-
5549
private void signIn() {
5650
this.setLoading(true);
5751

@@ -152,7 +146,7 @@ public void onDestroyView() {
152146
super.onDestroyView();
153147

154148
if (SettingsRepository.isMoodleSignedIn(requireContext())) {
155-
this.callback.apply(null);
149+
getParentFragmentManager().setFragmentResult("displayAssignmentsPage", new Bundle());
156150
}
157151

158152
compositeDisposable.dispose();

app/src/main/java/tk/therealsuji/vtopchennai/fragments/dialogs/ReCaptchaDialogFragment.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public ReCaptchaDialogFragment() {
2424
// Required empty public constructor
2525
}
2626

27+
// TODO: Remove this constructor, android fragments should never be created using a non-empty
28+
// constructor as android can sometimes re-create them with the empty constructor.
2729
public ReCaptchaDialogFragment(@NonNull WebView webView, @NonNull OnCancelListener onCancelListener) {
2830
this.onCancelListener = onCancelListener;
2931
this.webView = webView;

app/src/main/java/tk/therealsuji/vtopchennai/fragments/dialogs/UpdateDialogFragment.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,27 @@ public UpdateDialogFragment() {
2424
// Required empty public constructor
2525
}
2626

27-
public UpdateDialogFragment(String versionName, String releaseNotes) {
28-
this.versionName = versionName;
29-
this.releaseNotes = releaseNotes;
27+
public static UpdateDialogFragment newInstance(String versionName, String releaseNotes) {
28+
Bundle args = new Bundle();
29+
UpdateDialogFragment fragment = new UpdateDialogFragment();
30+
31+
args.putString("versionName", versionName);
32+
args.putString("releaseNotes", releaseNotes);
33+
34+
fragment.setArguments(args);
35+
return fragment;
3036
}
3137

3238
@Nullable
3339
@Override
3440
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
3541
View dialogFragment = inflater.inflate(R.layout.layout_dialog_update, container, false);
42+
Bundle args = getArguments();
43+
44+
if (args != null) {
45+
this.versionName = args.getString("versionName");
46+
this.releaseNotes = args.getString("releaseNotes");
47+
}
3648

3749
TextView description = dialogFragment.findViewById(R.id.text_view_description);
3850
description.setText(Html.fromHtml(this.requireContext().getString(R.string.update_message, this.versionName), Html.FROM_HTML_MODE_LEGACY));

0 commit comments

Comments
 (0)