(很抱歉,发现这个问题已经回答,见下文)
所以,我首先tried to extend the AlertDialog以便我可以在弹出窗口中使用EditTexts做一些事情,但是当I couldnt get that to work时,我现在在MainActivity中使用正常的AlertDialog.Builder创造我需要的东西。
下面的代码创建一个AlertDialog并使用“setView”将自定义视图添加到它。首次显示AlertDialog时,应禁用其POSITIVE按钮,并且只有当所有EditTexts都有文本时才应启用POSITIVT按钮。
所以我尝试在使用builder.create()后获取正面按钮。
但是, alert.getButton(AlertDialog.BUTTON_POSITIVE)返回NULL 。为什么呢?
final EditText ed1 = (EditText) findViewById(R.id.editTextPausArea);
final EditText ed2 = (EditText) findViewById(R.id.EditTextPausTimeFrom);
final EditText ed3 = (EditText) findViewById(R.id.EditTextPausTimeTo);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
.setTitle("Begär paus")
.setView(view)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).setNegativeButton("Avbryt", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Do nothing.
}
});
final AlertDialog alert = builder.create();
final Button b = alert.getButton(AlertDialog.BUTTON_POSITIVE);
b.setEnabled(false); // NullPointerException here!
答案 0 :(得分:7)
我遇到了同样的问题。我解决这个问题的方法是致电:
alert.show()
访问按钮之前
答案 1 :(得分:-3)
这可能会有所帮助
.setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((AlertDialog)dialog).getButton(which).setVisibility(View.INVISIBLE);
}
})