Может ли Android PopupWindow показать другое PopupWindow?

Может ли Android PopupWindow показать другое PopupWindow? Сколько PopupWindow можно открыть одновременно? Единственный?

Первое PopupWindow отображается нормально. Но при нажатии кнопки (, которая находится в первом представлении содержимого PopupWindow ), у меня возникает исключение :

08-13 16:28:38.682: ERROR/AndroidRuntime(11760): FATAL EXCEPTION: main
        android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@41286250 is not valid; is your activity running?
        at android.view.ViewRootImpl.setView(ViewRootImpl.java:600)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:313)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
        at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
        at android.view.Window$LocalWindowManager.addView(Window.java:537)
        at android.widget.PopupWindow.invokePopup(PopupWindow.java:992)
        at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:901)
        at org.example.qberticus.quickactions.BetterPopupWindow.showLikePopDownMenu(BetterPopupWindow.java:159)
        at org.example.qberticus.quickactions.BetterPopupWindow.showLikePopDownMenu(BetterPopupWindow.java:129)
        at name.antonsmirnov.android.popup.ui.MainActivity$1$1.run(MainActivity.java:44)
        at android.app.Activity.runOnUiThread(Activity.java:4170)
        at name.antonsmirnov.android.popup.ui.MainActivity$1.onClick(MainActivity.java:42)
        at android.view.View.performClick(View.java:3558)
        at android.view.View$PerformClick.run(View.java:14157)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4514)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
        at dalvik.system.NativeStart.main(Native Method)

. код:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    bindControls();
    initControls();
}

private Button button;

private void bindControls() {
    button = (Button) findViewById(R.id.button);
}

private void initControls() {
    initButton(button);
}

private void initButton(final Button button) {
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            final BetterPopupWindow window = new BetterPopupWindow(button);

            View popupview = createPopupView();
            window.setContentView(popupview);
            runOnUiThread(new Runnable() {
                public void run() {
                    window.showLikePopDownMenu();
                }
            });
        }
    });
}

private View createPopupView() {
    View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.window, null);
    Button popupButton = (Button) v.findViewById(R.id.popupbutton);
    initButton(popupButton);
    return v;
}
11
задан 4ntoine 13 August 2012 в 10:56
поделиться