diff --git a/src/i2p/bote/SetPasswordActivity.java b/src/i2p/bote/SetPasswordActivity.java index 40ab717..886d60b 100644 --- a/src/i2p/bote/SetPasswordActivity.java +++ b/src/i2p/bote/SetPasswordActivity.java @@ -2,8 +2,10 @@ package i2p.bote; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; +import android.widget.Toast; -public class SetPasswordActivity extends ActionBarActivity { +public class SetPasswordActivity extends ActionBarActivity implements + SetPasswordFragment.Callbacks { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -12,4 +14,12 @@ public class SetPasswordActivity extends ActionBarActivity { // Enable ActionBar app icon to behave as action to go back getSupportActionBar().setDisplayHomeAsUpEnabled(true); } + + // SetPasswordFragment.Callbacks + + public void onTaskFinished() { + Toast.makeText(this, R.string.password_changed, + Toast.LENGTH_SHORT).show(); + finish(); + } } diff --git a/src/i2p/bote/SetPasswordFragment.java b/src/i2p/bote/SetPasswordFragment.java index e25b0e7..a66c7f7 100644 --- a/src/i2p/bote/SetPasswordFragment.java +++ b/src/i2p/bote/SetPasswordFragment.java @@ -15,9 +15,31 @@ import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; -import android.widget.Toast; public class SetPasswordFragment extends Fragment { + private Callbacks mCallbacks = sDummyCallbacks; + + public interface Callbacks { + public void onTaskFinished(); + } + private static Callbacks sDummyCallbacks = new Callbacks() { + public void onTaskFinished() {}; + }; + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + if (!(activity instanceof Callbacks)) + throw new IllegalStateException("Activity must implement fragment's callbacks."); + mCallbacks = (Callbacks) activity; + } + + @Override + public void onDetach() { + super.onDetach(); + mCallbacks = sDummyCallbacks; + } + // Code to identify the fragment that is calling onActivityResult(). static final int PASSWORD_WAITER = 0; // Tag so we can find the task fragment again, in another @@ -72,7 +94,6 @@ public class SetPasswordFragment extends Fragment { f.setTargetFragment(SetPasswordFragment.this, PASSWORD_WAITER); mFM.beginTransaction() .replace(R.id.password_waiter_frag, f, PASSWORD_WAITER_TAG) - .addToBackStack(null) .commit(); } }); @@ -82,9 +103,7 @@ public class SetPasswordFragment extends Fragment { public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PASSWORD_WAITER) { if (resultCode == Activity.RESULT_OK) { - Toast.makeText(getActivity(), R.string.password_changed, - Toast.LENGTH_SHORT).show(); - getActivity().finish(); + mCallbacks.onTaskFinished(); } else if (resultCode == Activity.RESULT_CANCELED) { mSubmit.setEnabled(true); mError.setText(data.getStringExtra("error"));