简体   繁体   English

Android-弹出窗口崩溃

[英]Android - Popup window crashing

Searched for many solution in the stackoverflow community, but none solves my problem: I have a button in Main.java activity, when button is clicked, the popup menu does not show and the whole app is crashed. 在stackoverflow社区中搜索了许多解决方案,但是没有一个解决我的问题的: Main.java活动中有一个button ,单击该button时,弹出菜单不显示,并且整个应用程序都崩溃了。

Here is my code: 这是我的代码:

 Button _buyurtmaYaratish = (Button) findViewById(R.id.btn_buyurtma_berish);
    _buyurtmaYaratish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
            View popupView = layoutInflater.inflate(R.layout.popup_menu, null);
            final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

Button btnPopup = (Button) findViewById(R.id.btn_popup);
                btnPopup.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        popupWindow.dismiss();
                    }
                });
                popupWindow.showAsDropDown(btnPopup, 50, -30);
            }
        });

My Main.xml code: 我的Main.xml代码:

<RelativeLayout.......

<Button
        android:id="@+id/btn_buyurtma_berish"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:text="@string/buyurtma_berish"
        android:background="@drawable/button_kirish"
        android:textSize="18sp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:textColor="@color/white"
        android:layout_below="@+id/edtx_summa_miqdori"/>

</RelativeLayout>

My popup.xml code: 我的popup.xml代码:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rl"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">
    <TextView
        android:id="@+id/txt_kk_mas_popup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/aloqaga_chiqamiz"
        android:layout_centerHorizontal="true"
        android:textSize="18sp"
        android:layout_marginTop="30dp"
        android:textColor="@color/black"/>
    <Button
        android:layout_width="280dp"
        android:layout_height="wrap_content"
        android:background="@drawable/button_kirish"
        android:text="@string/tasdiqlash"
        android:textColor="@color/white"
        android:textSize="19sp"
        android:id="@+id/btn_popup"
        android:layout_below="@+id/txt_kk_mas_popup"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="25dp" />
   </RelativeLayout>

What Am I doing wrong? 我究竟做错了什么?

java.lang.NullPointerException
                                                                    at datasite.com.aroba.DelHome$2.onClick(DelHome.java:49)
                                                                    at android.view.View.performClick(View.java:4192)
                                                                    at android.view.View$PerformClick.run(View.java:17248)
                                                                    at android.os.Handler.handleCallback(Handler.java:615)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                    at android.os.Looper.loop(Looper.java:137)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:4950)
                                                                    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:997)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)
                                                                    at dalvik.system.NativeStart.main(Native Method)

This is highlighted red in the Logcat when I try to click button 当我尝试单击button时,该颜色在Logcat中以红色突出显示

使用Button btnPopup = (Button)popupView.findViewById(R.id.btn_popup)代替Button btnPopup = (Button) findViewById(R.id.btn_popup)作为

change this :-> Button btnPopup = (Button) findViewById(R.id.btn_popup); 改变这个 :-> Button btnPopup = (Button) findViewById(R.id.btn_popup);

with this :-> Button btnPopup = (Button) popupView.findViewById(R.id.btn_popup); 与此 :-> Button btnPopup = (Button) popupView.findViewById(R.id.btn_popup); in your code 在你的代码中

like below code 像下面的代码

     Button _buyurtmaYaratish = (Button) findViewById(R.id.btn_buyurtma_berish);
    _buyurtmaYaratish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
            View popupView = layoutInflater.inflate(R.layout.popup_menu, null);
            final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

Button btnPopup = (Button) popupView.findViewById(R.id.btn_popup);
                btnPopup.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        popupWindow.dismiss();
                    }
                });
                popupWindow.showAsDropDown(btnPopup, 50, -30);
            }
        });

I think you are making mistake here : 我认为您在这里犯了错误:

Button btnPopup = (Button) findViewById(R.id.btn_popup);

Change it like this: 像这样更改它:

Button btnPopup = (Button) popupView.findViewById(R.id.btn_popup);

Use this: 用这个:

Button btnPopup = (Button) popupView.findViewById(R.id.btn_popup);

instead of this: 代替这个:

Button btnPopup = (Button) findViewById(R.id.btn_popup);

Instead of Popup window, you had better to use AlertDialog which is not only easy to build but at the same time get similar background effects. 最好使用AlertDialog而不是Popup窗口,它不仅易于构建,而且同时具有相似的背景效果。 More flexible to move/change and smoothly works 移动/更改更灵活,工作更顺畅

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM