[英]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.