【发布时间】:2019-09-20 08:39:20
【问题描述】:
我添加了一个按钮“btn”。我已经设置了 onclicklistener,在按钮“btn”内我添加了另一个按钮“btnYes”以在添加这些“btnYes”应用程序崩溃时显示自定义对话框。
当我删除“btnyes”按钮时,应用程序正在运行。 我们可以为一个按钮中的两个按钮添加 onclicklistener 以进行不同的工作吗?
Java 代码
public class MainActivity extends AppCompatActivity {
private Button btn, btnYes, btnNo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = findViewById(R.id.click);
btnYes = findViewById(R.id.yes);
btnNo = findViewById(R.id.no);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dialogBox = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
View myView = inflater.inflate(R.layout.custom_dialogbox, null);
dialogBox.setView(myView);
final AlertDialog mybuilder = dialogBox.create();
mybuilder.setCancelable(false);
btnYes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mybuilder.dismiss();
}
});
}
});
}
}
尝试在空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” 在 com.example.customdialog.MainActivity$1.onClick(MainActivity.java:33)
【问题讨论】:
-
您的
btnYes和btnNo按钮是在您的主要活动上还是在对话框上?如果它们在对话框中,则不应使用MainActivity的findViewById方法初始化它们,因为它们不存在,因此引用将是null。相反,在外部侦听器内部膨胀之后,在AlertDialog的View对象上调用findViewById。