From 9def115330c3583813290873bbebae7a62853c54 Mon Sep 17 00:00:00 2001 From: Kevin Ruland Date: Sun, 5 Feb 2012 01:53:43 +0000 Subject: [PATCH] Fix menus when simulations are displayed and the device is rotated. The preference menu is controlled in the SimulationViewActivity instead of the Fragment. The activity now replaces the fragment instead of adding it. --- .../simulation/SimulationFragment.java | 5 +--- .../simulation/SimulationViewActivity.java | 25 +++++++++++++++++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/android/src/net/sf/openrocket/android/simulation/SimulationFragment.java b/android/src/net/sf/openrocket/android/simulation/SimulationFragment.java index dfcd57155..60c868221 100644 --- a/android/src/net/sf/openrocket/android/simulation/SimulationFragment.java +++ b/android/src/net/sf/openrocket/android/simulation/SimulationFragment.java @@ -39,7 +39,7 @@ public class SimulationFragment extends Fragment implements SimulationSeriesDial @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - setRetainInstance(false); + setRetainInstance(true); setHasOptionsMenu(true); OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument(); @@ -54,9 +54,6 @@ public class SimulationFragment extends Fragment implements SimulationSeriesDial @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - // TODO without the clear it seems to create multiple copies - // of the menu items on orientation change. - menu.clear(); inflater.inflate(R.menu.simulation_option_menu, menu); } diff --git a/android/src/net/sf/openrocket/android/simulation/SimulationViewActivity.java b/android/src/net/sf/openrocket/android/simulation/SimulationViewActivity.java index ec0895dab..8a478ab4d 100644 --- a/android/src/net/sf/openrocket/android/simulation/SimulationViewActivity.java +++ b/android/src/net/sf/openrocket/android/simulation/SimulationViewActivity.java @@ -15,6 +15,8 @@ */ package net.sf.openrocket.android.simulation; +import net.sf.openrocket.R; +import net.sf.openrocket.android.ActivityHelpers; import net.sf.openrocket.android.Application; import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.document.Simulation; @@ -22,6 +24,8 @@ import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; +import android.view.Menu; +import android.view.MenuItem; /** * An activity that encapsulates a graphical view of the chart. @@ -37,7 +41,7 @@ public class SimulationViewActivity extends FragmentActivity { final OpenRocketDocument rocketDocument = ((Application)getApplication()).getRocketDocument(); Simulation sim = rocketDocument.getSimulation(simulationNumber); - + SimulationChart chart = new SimulationChart( simulationNumber); chart.setSeries1(sim.getSimulatedData().getBranch(0).getTypes()[1]); chart.setSeries2(sim.getSimulatedData().getBranch(0).getTypes()[2]); @@ -45,8 +49,25 @@ public class SimulationViewActivity extends FragmentActivity { Fragment graph = SimulationFragment.newInstance(chart); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.add(android.R.id.content, graph); + ft.replace(android.R.id.content, graph); ft.commit(); } + @Override + public boolean onMenuItemSelected(int featureId, MenuItem item) { + switch (item.getItemId()) { + case R.id.preference_menu_option: + ActivityHelpers.startPreferences(this); + return true; + } + return super.onMenuItemSelected(featureId, item); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuItem prefItem = menu.add(Menu.NONE, R.id.preference_menu_option, Menu.CATEGORY_SYSTEM, R.string.Preferences); + prefItem.setIcon(R.drawable.ic_menu_preferences); + return true; + } + } \ No newline at end of file