From 7b1c745e39c00f492d087840d1ed57b4777c47ed Mon Sep 17 00:00:00 2001 From: kruland2607 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. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@393 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../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 dfcd5715..60c86822 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 ec0895da..8a478ab4 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 -- 2.47.2