无法显示弹出对话框。

10 浏览
0 Comments

无法显示弹出对话框。

我正在尝试从菜单选项中显示一个弹出对话框。代码如下:

public void createNewList(){
        popupCreateList = new PopupWindow(popupCreateListView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        popupCreateList.setBackgroundDrawable(new BitmapDrawable());
        popupCreateList.setOutsideTouchable(true);
        Log.i(TAG,"popUpListView-->>>" + popUpListView.getParent());
        //((ViewGroup)popUpListView.getParent()).removeView(popUpListView); <--被注释掉的
        popupCreateList.showAtLocation(findViewById(R.id.layoutTaskManagerID), Gravity.CENTER, 0, 0); <-- 错误
        //popupCreateList.showAsDropDown(listsButton, 50, -30);
    }

每当我尝试运行它时,它给出以下的logcat错误:

12-30 14:43:00.735: E/AndroidRuntime(1385): FATAL EXCEPTION: main
12-30 14:43:00.735: E/AndroidRuntime(1385): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.view.ViewGroup.addViewInner(ViewGroup.java:3378)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.view.ViewGroup.addView(ViewGroup.java:3249)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.view.ViewGroup.addView(ViewGroup.java:3225)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.widget.PopupWindow.preparePopup(PopupWindow.java:965)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.widget.PopupWindow.showAtLocation(PopupWindow.java:836)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.widget.PopupWindow.showAtLocation(PopupWindow.java:809)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at ray.kaushik.simple.task.manager.TaskManagerActivity.createNewList(TaskManagerActivity.java:340)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at ray.kaushik.simple.task.manager.TaskManagerActivity.onMenuItemSelected(TaskManagerActivity.java:324)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:958)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:468)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:126)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.view.View$PerformClick.run(View.java:16966)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.os.Handler.handleCallback(Handler.java:615)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.os.Looper.loop(Looper.java:137)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at android.app.ActivityThread.main(ActivityThread.java:4745)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at java.lang.reflect.Method.invokeNative(Native Method)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at java.lang.reflect.Method.invoke(Method.java:511)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-30 14:43:00.735: E/AndroidRuntime(1385):     at dalvik.system.NativeStart.main(Native Method)

当我尝试第二次点击时出现此错误。如果我取消注释删除视图的那一行,它仍然保持不变。请问有什么原因呢?请详细解释,因为我是新手。有什么解决办法吗?提前谢谢。

Ray

0
0 Comments

文章标题:解决Android中无法显示弹出对话框的问题

在Android开发中,有时候我们需要使用弹出对话框来展示一些信息或执行一些操作。然而,有些情况下可能会遇到无法显示弹出对话框的问题。下面提供了一段可以解决这个问题的代码示例,并适应于自己的需求。

首先,在项目中创建一个名为"my_options_menu.xml"的菜单文件,内容如下:


    

接下来,在项目中创建一个名为"popup.xml"的布局文件,内容如下:



    
        
            
            
            

然后,在主活动中添加以下代码:

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.my_options_menu, menu);
    return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.popup1:
            if (popupCreateList!=null) return true;
            LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);  
            View popupView = layoutInflater.inflate(R.layout.popup, null);
            popupCreateList = new PopupWindow( popupView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
            popupCreateList.setBackgroundDrawable(new BitmapDrawable());
            popupCreateList.setOutsideTouchable(true);
            popupCreateList.showAtLocation((RelativeLayout)findViewById(R.id.main_activity_layout), Gravity.CENTER, 0, 0); 
            Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
            btnDismiss.setOnClickListener(new Button.OnClickListener(){
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    popupCreateList.dismiss();
                    popupCreateList=null;
                }});
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

此外,建议阅读以下文章以获得更多灵感:

- [Example of using PopupWindow](http://android-er.blogspot.it/2012/03/example-of-using-popupwindow.html)

- [Using PopupWindow in Android](http://android-ed.blogspot.it/2011/08/using-popupwindow-in-android.html)

- [PopupWindow in Android](https://stackoverflow.com/questions/5944987)

希望这些信息能够帮助你解决问题,祝你好运!

0
0 Comments

在上述内容中,用户遇到了一个名为"Not able to display popup dialogue"的问题。根据内容,可以总结出该问题的原因是用户试图在菜单中显示一个对话框,但是无法成功。

解决该问题的方法是使用Alert对话框来代替。Alert对话框是一个弹出对话框,可以在其中添加多个按钮。如果Alert对话框不足以满足需求,还可以创建一个具有Alert主题的完整活动,并在清单文件中进行设置。然后,在需要的时候通过调用startActivity()来启动该活动,这样它看起来就像一个对话框,实际上是一个完全功能的活动,会位于活动堆栈的顶部。

此外,无论用户是从菜单还是其他地方启动该活动,对于问题本身来说都不重要。可以从任何地方启动该活动。

用户还提到需要从用户获取输入的弹出对话框,并请求提供有关使用新活动获取输入或充当弹出对话框的链接或更多详细信息。

总结起来,问题的原因是用户无法在菜单中显示弹出对话框,解决方法是使用Alert对话框或创建一个具有Alert主题的活动来实现弹出对话框的效果。

0