2017-08-22 95 views
-1

在stackoverflow社區中搜索了很多解決方案,但沒有解決我的問題:我在Main.java活動中有button活動,單擊button時,彈出菜單不顯示,整個應用程序崩潰。安卓 - 彈出式窗口崩潰

這裏是我的代碼:

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); 
      } 
     }); 

我的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> 

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

我在做什麼錯了?

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) 

這當我嘗試點擊button

+2

分享您的崩潰日誌與問題 –

+0

你可以發佈什麼錯誤,你在堆棧跟蹤 – Praneeth

回答

2

變化是突出了logcat的衝這: - > Button btnPopup = (Button) findViewById(R.id.btn_popup);

這個: - 在你的代碼

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

像下面的代碼

 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); 
      } 
     }); 
+1

工作。 thanxs – Zoffa

+0

我肯定會在7分鐘後允許 – Zoffa

+0

@ZafarKurbonov謝謝 –

2

我覺得你在這裏會犯錯:

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

改變這樣的:

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

哦,該死的,我很容易犯的錯誤。現在它正在工作!感謝 – Zoffa

+0

它有時會發生:-) – AndiM

3

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

+0

工作。感謝大家如此快速 – Zoffa

0

使用此:

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

,而不是這樣:

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

不是彈出窗口,你最好使用AlertDialog這不僅容易建立,但在同一時間得到類似的背景效果。更靈活地移動/更改,並順利工作