我创建了一个自定义对话框,在该对话框中我声明了两个用于图像上传的按钮,但如果我因为以下错误而无法进入此对话框
处理:com.example.crowderia.eatitserver,PID:23218 java.lang.NullPointerException:尝试调用虚方法'void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)” 在null对象引用上 在 com.example.crowderia.eatitserver.HomeActivity.showDialog(HomeActivity.java:135) 在 com.example.crowderia.eatitserver.HomeActivity.access $ 000(HomeActivity.java:46) 在 com.example.crowderia.eatitserver.HomeActivity $ 1.onClick(HomeActivity.java:87) 在android.view.View.performClick(View.java:4848) 在android.view.View $ PerformClick.run(View.java:20300) 在android.os.Handler.handleCallback(Handler.java:815) 在android.os.Handler.dispatchMessage(Handler.java:104) 在android.os.Looper.loop(Looper.java:210) 在android.app.ActivityThread.main(ActivityThread.java:5839) at java.lang.reflect.Method.invoke(Native Method) 在java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1113) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:879)
如果我删除按钮的setOnclick listner,则显示对话框 我该如何解决这个问题请帮助我新的
private void showDialog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(HomeActivity.this);
alertDialog.setTitle("Add new category");
alertDialog.setMessage("Please fill full information");
LayoutInflater inflater = this.getLayoutInflater();
View addMenuLayout = inflater.inflate(R.layout.add_new_menu_layout, null);
edtName = (MaterialEditText) addMenuLayout.findViewById(R.id.edt_name);
btnSelect = (Button) findViewById(R.id.btn_select);
btnUpload = (Button) findViewById(R.id.btn_upload);
btnSelect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
}
});
btnUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadImage();
}
});
alertDialog.setView(addMenuLayout);
alertDialog.setIcon(R.drawable.ic_shopping_cart_black_24dp);
alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if(newCategory != null) {
category.push().setValue(newCategory);
}
}
});
alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
答案 0 :(得分:3)
您的按钮在addMenuLayout
btnSelect = (Button)addMenuLayout. findViewById(R.id.btn_select);
btnUpload = (Button)addMenuLayout. findViewById(R.id.btn_upload);
答案 1 :(得分:0)
您必须通过提醒对话视图查找ID,因为您的视图存在于提醒对话框中。
btn_one=(Button)addMenuLayout.findViewById(R.id.btn);
你必须做这样的事情。
答案 2 :(得分:0)
从父视图中获取按钮。
Button btnSelect = (Button)addMenuLayout. findViewById(R.id.btn_select);
Button btnUpload = (Button)addMenuLayout. findViewById(R.id.btn_upload);