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.

This commit is contained in:
Kevin Ruland 2012-02-05 01:53:43 +00:00
parent ac1b718138
commit 9def115330
2 changed files with 24 additions and 6 deletions

View File

@ -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);
}

View File

@ -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;
}
}