From 58d4be409dcac10ede82db516ba4b0f7fb15ccea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Cort=C3=A9s=20Fern=C3=A1ndez?= Date: Mon, 19 Nov 2018 00:04:47 -0500 Subject: [PATCH] Change DialogFragment When there was multiple rotations, the application generate an IllegalStateException. Be cause of that, it is necessary to change some of the code of this class to avoid the problem. for example, using the method getParentFragment. Also, adding saved instances. --- .../timber/dialogs/LastFmLoginDialog.java | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/naman14/timber/dialogs/LastFmLoginDialog.java b/app/src/main/java/com/naman14/timber/dialogs/LastFmLoginDialog.java index ad4a99a79..43152f6f7 100644 --- a/app/src/main/java/com/naman14/timber/dialogs/LastFmLoginDialog.java +++ b/app/src/main/java/com/naman14/timber/dialogs/LastFmLoginDialog.java @@ -5,6 +5,7 @@ import android.app.ProgressDialog; import android.os.Bundle; import android.support.annotation.NonNull; +import android.util.Log; import android.widget.EditText; import android.widget.Toast; @@ -23,8 +24,12 @@ public class LastFmLoginDialog extends DialogFragment { public static final String FRAGMENT_NAME = "LastFMLogin"; + private String username; + private String password; @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { + public Dialog onCreateDialog(final Bundle savedInstanceState) { + + return new MaterialDialog.Builder(getActivity()). positiveText("Login"). negativeText(getString(R.string.cancel)). @@ -33,29 +38,47 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { onPositive(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - String username = ((EditText) dialog.findViewById(R.id.lastfm_username)).getText().toString(); - String password = ((EditText) dialog.findViewById(R.id.lastfm_password)).getText().toString(); + + if(savedInstanceState != null ){ + username = (savedInstanceState.containsKey("NAME_LOGIN"))? savedInstanceState.getString("NAME_LOGIN"): ((EditText) dialog.findViewById(R.id.lastfm_username)).getText().toString(); + + password = (savedInstanceState.containsKey("PASSWORD_LOGIN"))? savedInstanceState.getString("PASSWORD_LOGIN"): ((EditText) dialog.findViewById(R.id.lastfm_password)).getText().toString(); + } + else{ + username = ((EditText) dialog.findViewById(R.id.lastfm_username)).getText().toString(); + password = ((EditText) dialog.findViewById(R.id.lastfm_password)).getText().toString(); + } + if (username.length() == 0 || password.length() == 0) return; + final Toast toast = Toast.makeText(getActivity(), getString(R.string.lastfm_login_failture), Toast.LENGTH_SHORT); final ProgressDialog progressDialog = new ProgressDialog(getActivity()); progressDialog.setMessage("Logging in.."); progressDialog.show(); + LastFmClient.getInstance(getActivity()).getUserLoginInfo(new UserLoginQuery(username, password), new UserListener() { @Override public void userSuccess() { progressDialog.dismiss(); - if (getTargetFragment() instanceof SettingsFragment) { - ((SettingsFragment) getTargetFragment()).updateLastFM(); + if (getParentFragment() instanceof SettingsFragment) { + ((SettingsFragment) getParentFragment()).updateLastFM(); } } @Override public void userInfoFailed() { progressDialog.dismiss(); - Toast.makeText(getTargetFragment().getActivity(), getString(R.string.lastfm_login_failture), Toast.LENGTH_SHORT).show(); + toast.show(); } }); } }).build(); } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putString("NAME_LOGIN", username); + outState.putString("PASSWORD_LOGIN", password); + } }