Android中弹出窗口上的OnClick事件

时间:2012-08-30 07:44:03

标签: android events popup onclick

我在app上工作,我必须在我的主Activity中显示Popup,在Pop中我有一个Button,我需要在其上执行一些操作。

请看下面的代码。该代码没有给出任何错误,但弹出窗口的按钮单击不起作用。

imgOpenPopup = (ImageView) findViewById(R.id.places);

        imgOpenPopup.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater inflater = (LayoutInflater) ConvergeActivity.this
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                View popupView = inflater.inflate(R.layout.placepopup,(ViewGroup)findViewById(R.layout.maincam));  

                popupWindow = new PopupWindow(inflater.inflate(
                        R.layout.placepopup, null, false), 200, 265, true);

                popupWindow.showAtLocation(findViewById(R.id.places),
                        Gravity.CENTER, 0, 0);


                 objbtnpopupOk=(Button)popupView.findViewById(R.id.btnokpopup); 

                objbtnpopupOk.setOnClickListener(new OnClickListener() 
                { 
                    @Override
                    public void onClick(View v) 
                    { 
                        Toast.makeText(getApplicationContext(), " hi thrtrt  " ,Toast.LENGTH_LONG).show();
                    } 
            }); 

            }
        });

6 个答案:

答案 0 :(得分:3)

试试这个:

View popupView = inflater.inflate(R.layout.placepopup,(ViewGroup)findViewById(R.layout.maincam));  
popupWindow = new PopupWindow(popupView, 200, 265, true);
而不是这个:

View popupView = inflater.inflate(R.layout.placepopup,(ViewGroup)findViewById(R.layout.maincam));  
popupWindow = new PopupWindow(inflater.inflate(R.layout.placepopup, null, false), 200, 265, true);

答案 1 :(得分:3)

我真的不知道出了什么问题但this solution为我解决了。

欢呼声。

答案 2 :(得分:0)

尝试从OnClickListener中取出弹出窗口的创建,并在onClick中调用方法以显示弹出窗口。它几乎没有优化改进,它可以解决您的问题。

答案 3 :(得分:0)

为什么不尝试使用AlertDialog。这会对你有所帮助。阅读Alert Dialog

答案 4 :(得分:0)

在另一项活动中弹出:

将此主题添加到样式文件,然后将其设置为要在清单文件中弹出的活动。我确信该按钮可用于其他活动。

<resources>
<style name="Theme.Transparent" parent="android:Theme"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
</style>

答案 5 :(得分:0)

我这样做了:

 popupWindow.getContentView().setOnClickListener(new OnClickListener()...);

我希望它有所帮助。