Ali
Ali

Reputation: 1678

Show menu in android on startup

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

Answers (3)

TWiStErRob
TWiStErRob

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

MinceMan
MinceMan

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

user756706
user756706

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

Related Questions