为什么alert.getButton(AlertDialog.BUTTON_POSITIVE)返回NULL?

时间:2011-10-20 10:36:44

标签: android alertdialog

(很抱歉,发现这个问题已经回答,见下文)

所以,我首先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!

2 个答案:

答案 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);

    }
})