From 0d45721c9bbc2dd67b2083ccbc94751d256ef9dd Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 20 Jun 2014 08:20:10 +0000 Subject: [PATCH] Prevent NPE with FragmentManager not being initialized --- .../android/config/EditIdentityFragment.java | 40 +++++++++---------- .../android/config/SetPasswordFragment.java | 20 +++++----- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/i2p/bote/android/config/EditIdentityFragment.java b/app/src/main/java/i2p/bote/android/config/EditIdentityFragment.java index a368d23..fa18541 100644 --- a/app/src/main/java/i2p/bote/android/config/EditIdentityFragment.java +++ b/app/src/main/java/i2p/bote/android/config/EditIdentityFragment.java @@ -1,25 +1,9 @@ package i2p.bote.android.config; -import java.io.IOException; -import java.security.GeneralSecurityException; -import java.util.List; - -import i2p.bote.I2PBote; -import i2p.bote.android.R; -import i2p.bote.android.util.BoteHelper; -import i2p.bote.android.util.EditPictureFragment; -import i2p.bote.android.util.RobustAsyncTask; -import i2p.bote.android.util.TaskFragment; -import i2p.bote.StatusListener; -import i2p.bote.crypto.CryptoFactory; -import i2p.bote.crypto.CryptoImplementation; -import i2p.bote.email.EmailIdentity; -import i2p.bote.fileencryption.PasswordException; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -33,6 +17,22 @@ import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; +import java.io.IOException; +import java.security.GeneralSecurityException; +import java.util.List; + +import i2p.bote.I2PBote; +import i2p.bote.StatusListener; +import i2p.bote.android.R; +import i2p.bote.android.util.BoteHelper; +import i2p.bote.android.util.EditPictureFragment; +import i2p.bote.android.util.RobustAsyncTask; +import i2p.bote.android.util.TaskFragment; +import i2p.bote.crypto.CryptoFactory; +import i2p.bote.crypto.CryptoImplementation; +import i2p.bote.email.EmailIdentity; +import i2p.bote.fileencryption.PasswordException; + public class EditIdentityFragment extends EditPictureFragment { private Callbacks mCallbacks = sDummyCallbacks; @@ -68,7 +68,6 @@ public class EditIdentityFragment extends EditPictureFragment { static final int DEFAULT_CRYPTO_IMPL = 2; private String mKey; - private FragmentManager mFM; MenuItem mSave; EditText mNameField; EditText mDescField; @@ -90,8 +89,7 @@ public class EditIdentityFragment extends EditPictureFragment { super.onCreate(savedInstanceState); setHasOptionsMenu(true); - mFM = getFragmentManager(); - IdentityWaiterFrag f = (IdentityWaiterFrag) mFM.findFragmentByTag(IDENTITY_WAITER_TAG); + IdentityWaiterFrag f = (IdentityWaiterFrag) getFragmentManager().findFragmentByTag(IDENTITY_WAITER_TAG); if (f != null) f.setTargetFragment(this, IDENTITY_WAITER); } @@ -151,7 +149,7 @@ public class EditIdentityFragment extends EditPictureFragment { inflater.inflate(R.menu.edit_identity, menu); mSave = menu.findItem(R.id.action_save_identity); - IdentityWaiterFrag f = (IdentityWaiterFrag) mFM.findFragmentByTag(IDENTITY_WAITER_TAG); + IdentityWaiterFrag f = (IdentityWaiterFrag) getFragmentManager().findFragmentByTag(IDENTITY_WAITER_TAG); if (f != null) setInterfaceEnabled(false); } @@ -187,7 +185,7 @@ public class EditIdentityFragment extends EditPictureFragment { setDefault); f.setTask(new IdentityWaiter()); f.setTargetFragment(EditIdentityFragment.this, IDENTITY_WAITER); - mFM.beginTransaction() + getFragmentManager().beginTransaction() .replace(R.id.identity_waiter_frag, f, IDENTITY_WAITER_TAG) .commit(); return true; diff --git a/app/src/main/java/i2p/bote/android/config/SetPasswordFragment.java b/app/src/main/java/i2p/bote/android/config/SetPasswordFragment.java index de28e24..9b54c02 100644 --- a/app/src/main/java/i2p/bote/android/config/SetPasswordFragment.java +++ b/app/src/main/java/i2p/bote/android/config/SetPasswordFragment.java @@ -1,16 +1,10 @@ package i2p.bote.android.config; -import i2p.bote.I2PBote; -import i2p.bote.android.R; -import i2p.bote.android.util.RobustAsyncTask; -import i2p.bote.android.util.TaskFragment; -import i2p.bote.StatusListener; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -21,6 +15,12 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; +import i2p.bote.I2PBote; +import i2p.bote.StatusListener; +import i2p.bote.android.R; +import i2p.bote.android.util.RobustAsyncTask; +import i2p.bote.android.util.TaskFragment; + public class SetPasswordFragment extends Fragment { private Callbacks mCallbacks = sDummyCallbacks; @@ -51,7 +51,6 @@ public class SetPasswordFragment extends Fragment { // instance of this fragment after rotation. static final String PASSWORD_WAITER_TAG = "passwordWaiterTask"; - private FragmentManager mFM; MenuItem mSave; EditText mOldField; EditText mNewField; @@ -63,8 +62,7 @@ public class SetPasswordFragment extends Fragment { super.onCreate(savedInstanceState); setHasOptionsMenu(true); - mFM = getFragmentManager(); - PasswordWaiterFrag f = (PasswordWaiterFrag) mFM.findFragmentByTag(PASSWORD_WAITER_TAG); + PasswordWaiterFrag f = (PasswordWaiterFrag) getFragmentManager().findFragmentByTag(PASSWORD_WAITER_TAG); if (f != null) f.setTargetFragment(this, PASSWORD_WAITER); } @@ -91,7 +89,7 @@ public class SetPasswordFragment extends Fragment { mSave = menu.findItem(R.id.action_set_password); // If task is running, disable the save button. - PasswordWaiterFrag f = (PasswordWaiterFrag) mFM.findFragmentByTag(PASSWORD_WAITER_TAG); + PasswordWaiterFrag f = (PasswordWaiterFrag) getFragmentManager().findFragmentByTag(PASSWORD_WAITER_TAG); if (f != null) setInterfaceEnabled(false); } @@ -113,7 +111,7 @@ public class SetPasswordFragment extends Fragment { PasswordWaiterFrag f = PasswordWaiterFrag.newInstance(oldPassword, newPassword, confirmNewPassword); f.setTask(new PasswordWaiter()); f.setTargetFragment(SetPasswordFragment.this, PASSWORD_WAITER); - mFM.beginTransaction() + getFragmentManager().beginTransaction() .replace(R.id.password_waiter_frag, f, PASSWORD_WAITER_TAG) .commit(); return true;