select correct item in drawer on backstack change in main activity

This commit is contained in:
Vincent Breitmoser 2015-06-08 16:17:39 +02:00
parent 69c8ecd553
commit 0505af7520

View File

@ -23,6 +23,7 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentManager.OnBackStackChangedListener;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.View; import android.view.View;
@ -42,7 +43,7 @@ import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity;
import org.sufficientlysecure.keychain.util.FabContainer; import org.sufficientlysecure.keychain.util.FabContainer;
import org.sufficientlysecure.keychain.util.Preferences; import org.sufficientlysecure.keychain.util.Preferences;
public class MainActivity extends BaseNfcActivity implements FabContainer { public class MainActivity extends BaseNfcActivity implements FabContainer, OnBackStackChangedListener {
private static final int ID_KEYS = 1; private static final int ID_KEYS = 1;
private static final int ID_ENCRYPT_DECRYPT = 2; private static final int ID_ENCRYPT_DECRYPT = 2;
@ -121,6 +122,8 @@ public class MainActivity extends BaseNfcActivity implements FabContainer {
return; return;
} }
getSupportFragmentManager().addOnBackStackChangedListener(this);
Intent data = getIntent(); Intent data = getIntent();
// If we got an EXTRA_RESULT in the intent, show the notification // If we got an EXTRA_RESULT in the intent, show the notification
if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) { if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
@ -206,4 +209,25 @@ public class MainActivity extends BaseNfcActivity implements FabContainer {
} }
@Override
public void onBackStackChanged() {
FragmentManager fragmentManager = getSupportFragmentManager();
if (fragmentManager == null) {
return;
}
Fragment frag = fragmentManager.findFragmentById(R.id.main_fragment_container);
if (frag == null) {
return;
}
// make sure the selected icon is the one shown at this point
if (frag instanceof KeyListFragment) {
mDrawerResult.setSelection(mDrawerResult.getPositionFromIdentifier(ID_KEYS), false);
} else if (frag instanceof EncryptDecryptOverviewFragment) {
mDrawerResult.setSelection(mDrawerResult.getPositionFromIdentifier(ID_ENCRYPT_DECRYPT), false);
} else if (frag instanceof AppsListFragment) {
mDrawerResult.setSelection(mDrawerResult.getPositionFromIdentifier(ID_APPS), false);
}
}
} }