Reputation: 1678
Is there any way to automatically show the menu when an activity starts as it's a list activity which will be blank when it starts for the first time.
Upvotes: 0
Views: 1797
Reputation: 46480
I played around with this one and it didn't matter if I put it in onCreate
, onStart
, onResume
, onPostResume
it always threw (physical Galaxy S4 @ 4.4.2 and Genymotion Galaxy S2 @ 2.3.7):
10-23 12:50:22.389 27702-27702/net.twisterrob.debug D/AndroidRuntime﹕ Shutting down VM
10-23 12:50:22.389 27702-27702/net.twisterrob.debug W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x418e3da0)
10-23 12:50:22.389 27702-27702/net.twisterrob.debug E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: net.twisterrob.debug, PID: 27702
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.twisterrob.debug/net.twisterrob.android.MyActivity}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
...
Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:751)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:278)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:746)
at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:621)
at android.app.Activity.openOptionsMenu(Activity.java:2960)
at net.twisterrob.android.MyActivity.onCreate(MyActivity.java:35)
at android.app.Activity.performCreate(Activity.java:5426)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
...
The final solution that worked is:
@Override public void onAttachedToWindow() {
super.onAttachedToWindow();
openOptionsMenu();
}
After the activity has resumed and !isFinishing()
it is safe to use openOptionsMenu
in any event handler or AsyncTask.onPostExecute
.
Upvotes: 0
Reputation: 7592
All you have to do is call either on of these in a listener and you can open or close the menu no problem.
openOptionsMenu();
closeOptionsMenu();
So call it in onCreate.
public class List extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
openOptionsMenu();
}
// Menu Button Stuff
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu);
MenuInflater Menu = getMenuInflater();
Menu.inflate(R.menu.menu_layout, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.menuBack:
finish();
return true;
}
return false;
}
}
Upvotes: -1
Reputation:
Check Following link, It explain how to open and close option menu progamatically
http://kahdev.wordpress.com/2010/03/15/progamatically-open-and-close-an-activitys-option-menu/
Upvotes: 4