|
@@ -176,6 +176,7 @@ public class MainActivity extends Activity {
|
|
|
|
|
|
getActionBar().setDisplayHomeAsUpEnabled(true);
|
|
getActionBar().setDisplayHomeAsUpEnabled(true);
|
|
getActionBar().setHomeButtonEnabled(true);
|
|
getActionBar().setHomeButtonEnabled(true);
|
|
|
|
+ getActionBar().setDisplayShowHomeEnabled(true);
|
|
|
|
|
|
mDrawerToggle = new ActionBarDrawerToggle(
|
|
mDrawerToggle = new ActionBarDrawerToggle(
|
|
this, /* host Activity */
|
|
this, /* host Activity */
|
|
@@ -247,6 +248,15 @@ public class MainActivity extends Activity {
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if(item.getItemId() == android.R.id.home){
|
|
|
|
+ if(!mDrawerToggle.isDrawerIndicatorEnabled()){
|
|
|
|
+ if(getFragmentManager().getBackStackEntryCount() > 0) getFragmentManager().popBackStack();
|
|
|
|
+
|
|
|
|
+ if(getCurrentFragment().getTag() != null) mDrawerToggle.setDrawerIndicatorEnabled(true);
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
return super.onOptionsItemSelected(item);
|
|
return super.onOptionsItemSelected(item);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -335,21 +345,54 @@ public class MainActivity extends Activity {
|
|
|
|
|
|
if (fragment != null) {
|
|
if (fragment != null) {
|
|
// update selected item and title, then close the drawer if needed
|
|
// update selected item and title, then close the drawer if needed
|
|
- FragmentManager fragmentManager = getFragmentManager();
|
|
|
|
- FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
|
|
|
- fragmentTransaction.replace(R.id.content_frame, fragment, fragment.getTag());
|
|
|
|
- fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
|
|
|
|
- fragmentTransaction.commit();
|
|
|
|
|
|
+ injectFragment(fragment, false, menuItemPosition);
|
|
|
|
+
|
|
mDrawerList.setItemChecked(position, true);
|
|
mDrawerList.setItemChecked(position, true);
|
|
mDrawerList.setSelection(position);
|
|
mDrawerList.setSelection(position);
|
|
setTitle(mDrawerItems.get(position).text);
|
|
setTitle(mDrawerItems.get(position).text);
|
|
-
|
|
|
|
- this.mDisplayedFragment = fragment;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
mDrawerLayout.closeDrawer(mDrawerList);
|
|
mDrawerLayout.closeDrawer(mDrawerList);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void injectFragment(Fragment fragment, boolean enableBack){
|
|
|
|
+ injectFragment(fragment, enableBack, null);
|
|
|
|
+ }
|
|
|
|
+ public void injectFragment(Fragment fragment, boolean enableBack, Object tagObj){
|
|
|
|
+ if(enableBack){
|
|
|
|
+ mDrawerToggle.setDrawerIndicatorEnabled(false);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String tag = (tagObj == null ? null : tagObj.toString());
|
|
|
|
+
|
|
|
|
+ FragmentManager fragmentManager = getFragmentManager();
|
|
|
|
+ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
|
|
|
+ fragmentTransaction.replace(R.id.content_frame, fragment, tag);
|
|
|
|
+
|
|
|
|
+ if(tagObj == null || !(fragmentManager.getBackStackEntryCount() == 0 && tagObj.equals(MainMenuItem.HOME))) fragmentTransaction.addToBackStack(tag);
|
|
|
|
+
|
|
|
|
+ fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
|
|
|
|
+ fragmentTransaction.commit();
|
|
|
|
+
|
|
|
|
+ this.mDisplayedFragment = fragment;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onBackPressed() {
|
|
|
|
+ super.onBackPressed();
|
|
|
|
+ if(getCurrentFragment().getTag() != null) mDrawerToggle.setDrawerIndicatorEnabled(true);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static void displayBackStack(FragmentManager fm) {
|
|
|
|
+ int count = fm.getBackStackEntryCount();
|
|
|
|
+ Log.d("Backstack log", "There are " + count + " entries");
|
|
|
|
+ for(int i = 0; i<count; i++) {
|
|
|
|
+ // Display Backstack-entry data like
|
|
|
|
+ String name = fm.getBackStackEntryAt(i).getName();
|
|
|
|
+ Log.d("Backstack log", "entry " + i + ": " + name);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
public Intent getServiceIntent() {
|
|
public Intent getServiceIntent() {
|
|
return new Intent(this, HoneyService.class);
|
|
return new Intent(this, HoneyService.class);
|
|
}
|
|
}
|