android:scheme="file" />\r
</intent-filter>\r
</activity>\r
- <activity\r
- android:name=".android.rocket.OpenRocketViewer"\r
- android:finishOnTaskLaunch="true" />\r
+ <activity android:name=".android.rocket.OpenRocketViewer"\r
+ android:windowSoftInputMode="adjustPan" />\r
<activity android:name=".android.PreferencesActivity" >\r
<intent-filter>\r
<action android:name="net.sf.openrocket.android.PreferencesActivity" />\r
}\r
\r
@Override\r
- public void onActivityCreated(Bundle savedInstanceState) {\r
- super.onActivityCreated(savedInstanceState);\r
-\r
+ public void onResume() {\r
+ super.onResume();\r
final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
componentTree.setAdapter( buildAdapter( rocketDocument.getRocket() ) );\r
}\r
- \r
+\r
private ListAdapter buildAdapter( Rocket rocket ) {\r
\r
TreeStateManager<RocketComponentWithId> manager = new InMemoryTreeStateManager<RocketComponentWithId>();\r
return v;\r
}\r
\r
+ @Override\r
+ public void onResume() {\r
+ setup();\r
+ super.onResume();\r
+ }\r
+\r
@Override\r
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {\r
inflater.inflate(R.menu.rocket_viewer_configurations_option_menu, menu);\r
}\r
}\r
\r
- @Override\r
- public void onActivityCreated(Bundle savedInstanceState) {\r
- super.onActivityCreated(savedInstanceState);\r
-\r
- setup();\r
-\r
- }\r
- \r
public void refreshConfigsList() {\r
setup();\r
}\r
AndroidLogWrapper.d(OpenRocketLoaderActivity.class,"Finished loading " + OpenRocketLoaderTask.this);\r
Fragment progress = getActivity().getSupportFragmentManager().findFragmentByTag(PROGRESS_DIALOG_TAG);\r
if ( progress != null ) {\r
- ((DialogFragment)progress).dismiss();\r
+ ((ProgressDialogFragment)progress).dismissAllowingStateLoss();\r
}\r
if ( listener != null ) {\r
listener.onOpenRocketFileLoaded(result);\r
import net.sf.openrocket.android.simulation.SimulationViewActivity;\r
import net.sf.openrocket.android.simulation.SimulationViewFragment;\r
import net.sf.openrocket.android.util.AndroidLogWrapper;\r
+import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.document.Simulation;\r
import android.app.AlertDialog;\r
import android.content.Intent;\r
protected void onCreate(Bundle savedInstanceState) {\r
super.onCreate(savedInstanceState);\r
\r
- setTitle(CurrentRocketHolder.getCurrentRocket().getRocketDocument().getRocket().getName());\r
+ // If the application sleeps for a long time, the CurrentRocketHolder might get cleaned\r
+ // up. When this happens, we cannot restore this state, so instead we just\r
+ // go home.\r
+ OpenRocketDocument rocDoc = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
+ if ( rocDoc == null ) {\r
+ AndroidLogWrapper.d(OpenRocketViewer.class, "No document - go home");\r
+ ActivityHelpers.goHome(this);\r
+ finish();\r
+ return;\r
+ }\r
+ setTitle(rocDoc.getRocket().getName());\r
getSupportActionBar().setHomeButtonEnabled(true);\r
\r
setContentView(R.layout.openrocketviewer);\r
@Override\r
protected void onResume() {\r
RocketChangedEventHandler handler = new RocketChangedEventHandler();\r
- // Fire change notices so the displayed lists get updated.\r
- // This is primarily because simulations run in the background\r
- handler.doSimsChanged();\r
- CurrentRocketHolder.getCurrentRocket().setHandler( handler );\r
+ CurrentRocketHolder.getCurrentRocket().setHandler(handler);\r
super.onResume();\r
}\r
\r
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
prefs.registerOnSharedPreferenceChangeListener(this);\r
\r
+ }\r
+\r
+ @Override\r
+ public void onResume() {\r
+ super.onResume();\r
setup();\r
\r
}\r
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
prefs.registerOnSharedPreferenceChangeListener(this);\r
\r
+ }\r
+\r
+ @Override\r
+ public void onResume() {\r
+ super.onResume();\r
setup();\r
\r
}\r
package net.sf.openrocket.android.util;\r
\r
+import java.lang.reflect.Method;\r
+\r
import android.app.ProgressDialog;\r
import android.os.Bundle;\r
import android.support.v4.app.DialogFragment;\r
return fragment;\r
}\r
\r
+ /**\r
+ * Expose the private method to allow dismissing a dialog after saveInstanceState.\r
+ */\r
+ public void dismissAllowingStateLoss() {\r
+ try {\r
+ Method dismissInternalMethod = ProgressDialogFragment.class.getMethod("dismissInternal", Boolean.class);\r
+ dismissInternalMethod.setAccessible(true);\r
+ dismissInternalMethod.invoke(this, true);\r
+ } catch (Exception ex ) {\r
+ AndroidLogWrapper.d(ProgressDialogFragment.class, "Exception calling dismissAllowingStateInteral");\r
+ }\r
+ }\r
\r
@Override\r
public void onCreate(Bundle savedInstanceState) {\r