My app creates a simple ListActivity. I want the ListView's context
menu to stay on the screen when it rotates, so I cache the selected
item's position. When the activity resumes I call openContextMenu
(getListView()) and use the cached item's position to retrieve the
ListView item's info. The info is successfully restored (as observed
in the debugger), but the app crashes somewhere after
onCreateContextMenu() is finished executing.

The debugger gives me the following info, but I don't know exactly
what it means:

10-28 15:29:50.548: INFO/WindowManager(61): onOrientationChanged,
rotation changed to 0
10-28 15:29:50.808: WARN/WindowManager(61): Requested window null does
not exist
10-28 15:29:50.808: WARN/WindowManager(61): java.lang.RuntimeException
10-28 15:29:50.808: WARN/WindowManager(61):     at
com.android.server.WindowManagerService.windowForClientLocked
(WindowManagerService.java:7377)
10-28 15:29:50.808: WARN/WindowManager(61):     at
com.android.server.WindowManagerService.addWindow
(WindowManagerService.java:1145)
10-28 15:29:50.808: WARN/WindowManager(61):     at
com.android.server.WindowManagerService$Session.add
(WindowManagerService.java:5267)
10-28 15:29:50.808: WARN/WindowManager(61):     at
android.view.IWindowSession$Stub.onTransact(IWindowSession.java:74)
10-28 15:29:50.808: WARN/WindowManager(61):     at
com.android.server.WindowManagerService$Session.onTransact
(WindowManagerService.java:5240)
10-28 15:29:50.808: WARN/WindowManager(61):     at
android.os.Binder.execTransact(Binder.java:287)
10-28 15:29:50.808: WARN/WindowManager(61):     at
dalvik.system.NativeStart.run(Native Method)
10-28 15:29:50.808: WARN/WindowManager(61): Attempted to add window
with token that is not a window: null.  Aborting.


What am I doing wrong?


public class LoginActivity extends ListActivity implements Runnable {

        private int mContextMenuPosition = -1;

        @Override
        public void onCreate(Bundle icicle) {
        ...
        registerForContextMenu(getListView());
        ...
        }

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
                try {
                        int position;
                        super.onCreateContextMenu(menu, v, menuInfo);
                        AdapterContextMenuInfo info = (AdapterContextMenuInfo)
menuInfo;
                        position = (info == null) ? mContextMenuPosition :
info.position;
                        ....more stuff
                }
                catch ( Exception ex ) { // exception not caught, so the 
problem is
elsewhere
                        toastException( ex );
                        logException(ex);
                }

        @Override
        protected void onSaveInstanceState(Bundle outState) {
                outState.putInt("contextMenuPosition", mContextMenuPosition);
        }

        @Override
        protected void onRestoreInstanceState( Bundle inState ){
                if ( inState.containsKey("contextMenuPosition") ) {
                        mContextMenuPosition = 
inState.getInt("contextMenuPosition");
                }
        }

        @Override
        protected void onResume() {
            super.onResume();
            if ( mContextMenuPosition > 0 ) {
                openContextMenu(getListView());
        }
    }
};

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to