On Oct 28, 5:54 pm, skataben <[email protected]> wrote:
> 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(ContextMenumenu, 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());
>         }
>     }
>
> };
>
>

I'm also looking for a way to avoid the ContextMenu to disappear when
screen rotates.

Anyone did it?

-- 
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