diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiAccountCreationFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiAccountCreationFragment.java index b96532367ec9cd52ca681514cd0824164105b530..2a0294c987b99e446b6cf1d260752969cbaa4ab6 100644 --- a/ring-android/app/src/main/java/cx/ring/account/JamiAccountCreationFragment.java +++ b/ring-android/app/src/main/java/cx/ring/account/JamiAccountCreationFragment.java @@ -23,7 +23,6 @@ import android.content.Context; import android.os.Bundle; import android.util.SparseArray; import android.view.LayoutInflater; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; @@ -38,7 +37,6 @@ import androidx.viewpager.widget.ViewPager; import cx.ring.databinding.FragAccJamiCreateBinding; import cx.ring.mvp.AccountCreationModel; -import cx.ring.mvp.BaseSupportFragment; import cx.ring.views.WizardViewPager; public class JamiAccountCreationFragment extends Fragment { @@ -104,12 +102,7 @@ public class JamiAccountCreationFragment extends Fragment { LinearLayout tabStrip = ((LinearLayout) mBinding.indicator.getChildAt(0)); for(int i = 0; i < tabStrip.getChildCount(); i++) { - tabStrip.getChildAt(i).setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - return true; - } - }); + tabStrip.getChildAt(i).setOnTouchListener((v, event) -> true); } } @@ -142,6 +135,7 @@ public class JamiAccountCreationFragment extends Fragment { super(fm); } + @NonNull @Override public Fragment getItem(int position) { Fragment fragment = null; @@ -157,7 +151,6 @@ public class JamiAccountCreationFragment extends Fragment { fragment = ProfileCreationFragment.newInstance(ringAccountViewModel); break; } - return fragment; } diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiAccountPasswordFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiAccountPasswordFragment.java index 9c718c39c11e51ea5ee7a9f2b67e9f2c48b9038c..6db6ca0207f8ddedec0740cb8023722bb14cc594 100644 --- a/ring-android/app/src/main/java/cx/ring/account/JamiAccountPasswordFragment.java +++ b/ring-android/app/src/main/java/cx/ring/account/JamiAccountPasswordFragment.java @@ -63,6 +63,10 @@ public class JamiAccountPasswordFragment extends BaseSupportFragment<JamiAccount @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + setRetainInstance(true); + if (savedInstanceState != null && model == null) { + model = (AccountCreationModelImpl) savedInstanceState.getSerializable(KEY_MODEL); + } binding = FragAccJamiPasswordBinding.inflate(inflater, container, false); ((JamiApplication) requireActivity().getApplication()).getInjectionComponent().inject(this); return binding.getRoot(); @@ -77,10 +81,6 @@ public class JamiAccountPasswordFragment extends BaseSupportFragment<JamiAccount @Override public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - setRetainInstance(true); - if (savedInstanceState != null) { - model = (AccountCreationModelImpl) savedInstanceState.getSerializable(KEY_MODEL); - } binding.createAccount.setOnClickListener(v -> presenter.createAccount()); binding.ringPasswordSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> { diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiAccountUsernameFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiAccountUsernameFragment.java index 75f8d81eac61b7c7a2f3c20401453f668fd6c0ca..bbd8b045d082e7f4e716555269581ab0be37a645 100644 --- a/ring-android/app/src/main/java/cx/ring/account/JamiAccountUsernameFragment.java +++ b/ring-android/app/src/main/java/cx/ring/account/JamiAccountUsernameFragment.java @@ -49,6 +49,7 @@ import cx.ring.utils.RegisteredNameFilter; public class JamiAccountUsernameFragment extends BaseSupportFragment<JamiAccountCreationPresenter> implements JamiAccountCreationView { + private static final String KEY_MODEL = "model"; private AccountCreationModel model; private FragAccJamiUsernameBinding binding; @@ -58,9 +59,19 @@ public class JamiAccountUsernameFragment extends BaseSupportFragment<JamiAccount return fragment; } + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + if (model != null) + outState.putSerializable(KEY_MODEL, model); + } + @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + setRetainInstance(true); + if (savedInstanceState != null && model == null) { + model = (AccountCreationModelImpl) savedInstanceState.getSerializable(KEY_MODEL); + } binding = FragAccJamiUsernameBinding.inflate(inflater, container, false); ((JamiApplication) getActivity().getApplication()).getInjectionComponent().inject(this); return binding.getRoot(); diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountFragment.java index b71fb6dc74d65bf1b713170c5f18e008c19dccb0..f983c22c099947bcb61a37cb80ae966f7842f5c4 100644 --- a/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountFragment.java +++ b/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountFragment.java @@ -65,16 +65,24 @@ public class JamiLinkAccountFragment extends BaseSupportFragment { } }; - public static JamiLinkAccountFragment newInstance(AccountCreationModelImpl ringAccountViewModel) { JamiLinkAccountFragment fragment = new JamiLinkAccountFragment(); fragment.model = ringAccountViewModel; return fragment; } + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + outState.putSerializable("model", model); + } + @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + setRetainInstance(true); + if (savedInstanceState != null && model == null) { + model = (AccountCreationModel) savedInstanceState.getSerializable("model"); + } mBinding = FragAccJamiLinkBinding.inflate(inflater, container, false); return mBinding.getRoot(); } @@ -109,7 +117,6 @@ public class JamiLinkAccountFragment extends BaseSupportFragment { } }); - } @Override @@ -132,7 +139,6 @@ public class JamiLinkAccountFragment extends BaseSupportFragment { } private static class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { - AccountCreationModelImpl ringAccountViewModel; SparseArray<Fragment> mRegisteredFragments = new SparseArray<>(); diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountPasswordFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountPasswordFragment.java index f592d815fc15ccf49ef8ee6ae10eb4265878c836..1c614317d58e652b2337a2cd8801e8951828e8ff 100644 --- a/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountPasswordFragment.java +++ b/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountPasswordFragment.java @@ -24,7 +24,6 @@ import android.content.Context; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; -import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -33,13 +32,9 @@ import android.view.inputmethod.InputMethodManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentStatePagerAdapter; import cx.ring.R; import cx.ring.application.JamiApplication; -import cx.ring.databinding.FragAccJamiLinkBinding; import cx.ring.databinding.FragAccJamiLinkPasswordBinding; import cx.ring.mvp.AccountCreationModel; import cx.ring.mvp.BaseSupportFragment; @@ -60,6 +55,8 @@ public class JamiLinkAccountPasswordFragment extends BaseSupportFragment<JamiLin @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + if (model == null) + return null; mBinding = FragAccJamiLinkPasswordBinding.inflate(inflater, container, false); ((JamiApplication) getActivity().getApplication()).getInjectionComponent().inject(this); return mBinding.getRoot(); @@ -74,7 +71,6 @@ public class JamiLinkAccountPasswordFragment extends BaseSupportFragment<JamiLin @Override public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mBinding.linkButton.setOnClickListener(v -> presenter.linkClicked()); mBinding.ringAddPin.setOnEditorActionListener((v, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_DONE) { diff --git a/ring-android/libringclient/src/main/java/cx/ring/account/JamiLinkAccountPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/account/JamiLinkAccountPresenter.java index 2780bbb66b03ca00d333c1739547f7041a378c2e..c875815e06e79a247156facf4f6af08a1275bba6 100644 --- a/ring-android/libringclient/src/main/java/cx/ring/account/JamiLinkAccountPresenter.java +++ b/ring-android/libringclient/src/main/java/cx/ring/account/JamiLinkAccountPresenter.java @@ -48,12 +48,14 @@ public class JamiLinkAccountPresenter extends RootPresenter<JamiLinkAccountView> } public void passwordChanged(String password) { - mAccountCreationModel.setPassword(password); + if (mAccountCreationModel != null) + mAccountCreationModel.setPassword(password); showHideLinkButton(); } public void pinChanged(String pin) { - mAccountCreationModel.setPin(pin); + if (mAccountCreationModel != null) + mAccountCreationModel.setPin(pin); showHideLinkButton(); }