Fix back button behaviour

This commit is contained in:
Matthew Wong 2016-07-08 22:00:53 -04:00
parent 4589c0f833
commit 017650bf37
2 changed files with 12 additions and 25 deletions

View file

@ -1,7 +1,7 @@
package com.zeapo.pwdstore;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
@ -94,24 +94,23 @@ public class PasswordFragment extends Fragment{
}
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
public void onAttach(final Context context) {
super.onAttach(context);
try {
mListener = new OnFragmentInteractionListener() {
public void onFragmentInteraction(PasswordItem item) {
if (item.getType() == PasswordItem.TYPE_CATEGORY) {
// push the current password list (non filtered plz!)
passListStack.push(pathStack.isEmpty() ?
PasswordRepository.getPasswords(PasswordRepository.getRepositoryDirectory(activity)) :
PasswordRepository.getPasswords(pathStack.peek(), PasswordRepository.getRepositoryDirectory(activity)));
PasswordRepository.getPasswords(PasswordRepository.getRepositoryDirectory(context)) :
PasswordRepository.getPasswords(pathStack.peek(), PasswordRepository.getRepositoryDirectory(context)));
//push the category were we're going
pathStack.push(item.getFile());
scrollPosition.push(recyclerView.getVerticalScrollbarPosition());
recyclerView.scrollToPosition(0);
recyclerAdapter.clear();
recyclerAdapter.addAll(PasswordRepository.getPasswords(item.getFile(), PasswordRepository.getRepositoryDirectory(activity)));
recyclerAdapter.addAll(PasswordRepository.getPasswords(item.getFile(), PasswordRepository.getRepositoryDirectory(context)));
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
@ -128,7 +127,7 @@ public class PasswordFragment extends Fragment{
}
};
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
throw new ClassCastException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}

View file

@ -339,16 +339,6 @@ public class PasswordStore extends AppCompatActivity {
if (fragmentManager.findFragmentByTag("PasswordsList") == null || settings.getBoolean("repo_changed", false)) {
settings.edit().putBoolean("repo_changed", false).apply();
// todo move this as it is duplicated upthere!
if (fragmentManager.findFragmentByTag("PasswordsList") != null) {
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
// clean things up
if (fragmentManager.findFragmentByTag("ToCloneOrNot") != null) {
fragmentManager.popBackStack();
}
plist = new PasswordFragment();
Bundle args = new Bundle();
args.putString("Path", PasswordRepository.getWorkTree().getAbsolutePath());
@ -361,21 +351,19 @@ public class PasswordStore extends AppCompatActivity {
plist.setArguments(args);
fragmentTransaction.addToBackStack("passlist");
getSupportActionBar().show();
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentTransaction.replace(R.id.main_layout, plist, "PasswordsList");
fragmentTransaction.commit();
}
} else {
// if we still have the pass list (after deleting the repository for instance) remove it
if (fragmentManager.findFragmentByTag("PasswordsList") != null) {
fragmentManager.popBackStack();
}
getSupportActionBar().hide();
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
ToCloneOrNot cloneFrag = new ToCloneOrNot();
fragmentTransaction.replace(R.id.main_layout, cloneFrag, "ToCloneOrNot");
fragmentTransaction.commit();