Browse Source

Fixed up navigation in the wifi direct activity

Alexander Brakowski 9 years ago
parent
commit
49e08e662c

+ 1 - 5
AndroidManifest.xml

@@ -131,11 +131,7 @@
 
         <activity
             android:name=".sync.wifi_direct.ui.WiFiP2pSyncActivity"
-            android:label="@string/title_activity_p2_psync"
-            android:parentActivityName=".ui.activity.MainActivity" >
-            <meta-data
-                android:name="android.support.PARENT_ACTIVITY"
-                android:value="de.tudarmstadt.informatik.hostage.ui.activity.MainActivity" />
+            android:label="@string/title_activity_p2_psync">
         </activity>
 
         <service android:name=".sync.android.SyncService"

+ 11 - 0
src/de/tudarmstadt/informatik/hostage/sync/wifi_direct/ui/WiFiP2pSyncActivity.java

@@ -12,6 +12,7 @@ import android.os.Bundle;
 import android.provider.Settings;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
@@ -118,6 +119,7 @@ public class WiFiP2pSyncActivity extends Activity implements AdapterView.OnItemC
 
         assert getActionBar() != null;
         getActionBar().setTitle(ACTIONBAR_TITLE);
+        getActionBar().setDisplayHomeAsUpEnabled(true);
 
         this.extractFromView();
         this.registerListeners();
@@ -139,6 +141,15 @@ public class WiFiP2pSyncActivity extends Activity implements AdapterView.OnItemC
 		}, 1000, seconds * 1000); // search for devices every few seconds
     }
 
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            finish();
+        }
+
+        return super.onOptionsItemSelected(item);
+    }
+
     @Override
     public void onResume() {
         super.onResume();

+ 24 - 1
src/de/tudarmstadt/informatik/hostage/ui/activity/MainActivity.java

@@ -71,6 +71,11 @@ public class MainActivity extends Activity {
 	 */
 	public Fragment mDisplayedFragment;
 
+    /**
+     * The currently displayed fragment index
+     */
+    public int mDisplayedFragmentIndex;
+
 	/**
 	 * Holds the Hostage Service
 	 */
@@ -313,9 +318,26 @@ public class MainActivity extends Activity {
 		if (savedInstanceState == null) {
 			// on first time display view for first nav item
 			displayView(0);
-		}
+		} else {
+            mDisplayedFragmentIndex = savedInstanceState.getInt("mDisplayedFragmentIndex");
+            mDisplayedFragment = getFragmentManager().getFragment(savedInstanceState, "mDisplayedFragment");
+
+            mDrawerList.setItemChecked(mDisplayedFragmentIndex, true);
+            mDrawerList.setSelection(mDisplayedFragmentIndex);
+            setTitle(mDrawerItems.get(mDisplayedFragmentIndex).text);
+
+            injectFragment(mDisplayedFragment);
+        }
 	}
 
+    @Override
+    protected void onSaveInstanceState(Bundle outState){
+        super.onSaveInstanceState(outState);
+
+        outState.putInt("mDisplayedFragmentIndex", mDisplayedFragmentIndex);
+        getFragmentManager().putFragment(outState, "mDisplayedFragment", mDisplayedFragment);
+    }
+
 	/**
 	 * Displays the disclaimer on first run of the application
 	 */
@@ -515,6 +537,7 @@ public class MainActivity extends Activity {
 
 			injectFragment(fragment);
 
+            mDisplayedFragmentIndex = position;
 			mDrawerList.setItemChecked(position, true);
 			mDrawerList.setSelection(position);
 			setTitle(mDrawerItems.get(position).text);