0

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.

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:

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

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

Zafar Kurbonov
  • 2,077
  • 4
  • 19
  • 42

5 Answers5

3

Use Button btnPopup = (Button)popupView.findViewById(R.id.btn_popup) instead of Button btnPopup = (Button) findViewById(R.id.btn_popup) as

Altaf Shaikh
  • 729
  • 8
  • 19
2

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

with this :-> 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);
            }
        });
AskNilesh
  • 67,701
  • 16
  • 123
  • 163
2

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);
AndiM
  • 2,196
  • 2
  • 21
  • 38
0

Use this:

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

instead of this:

Button btnPopup = (Button) findViewById(R.id.btn_popup);
komal akhani
  • 553
  • 6
  • 20
0

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. More flexible to move/change and smoothly works