无法访问 AlertDialog 内的视图
Unable to access views inside an AlertDialog
我从这里复制了整个代码
Android custom numeric keyboard
并在 AlertDialog
中使用它。现在当我调试应用程序时,onClick()
没有被调用。
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(R.layout.keypad_layout);
builder.setCancelable(false).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.setPositiveButton("Modify", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.create().show();\
正在显示警报对话框,正负按钮有效,唯一的问题是我无法访问布局内的视图
您需要先将布局扩展到一个 View 实例,然后您可以为键设置 OnClickListeners:
LayoutInflater inflater = LayoutInflater.from(context);
View mView = inflater.inflate(R.layout.keypad_layout, null);
builder.setView(mView);
final TextView key8 = (TextView) mView.findViewById(R.id.t9_key_8);
key8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do something
}
});
用其他键重复我对 key8 所做的操作
原来,AlertDialog
returns一个view
AlertDialog dialog = builder.create();
dialog.show();
mPasswordField = (EditText) dialog.findViewById(R.id.password_field);
这对我有用。
我从这里复制了整个代码
Android custom numeric keyboard
并在 AlertDialog
中使用它。现在当我调试应用程序时,onClick()
没有被调用。
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(R.layout.keypad_layout);
builder.setCancelable(false).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.setPositiveButton("Modify", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.create().show();\
正在显示警报对话框,正负按钮有效,唯一的问题是我无法访问布局内的视图
您需要先将布局扩展到一个 View 实例,然后您可以为键设置 OnClickListeners:
LayoutInflater inflater = LayoutInflater.from(context);
View mView = inflater.inflate(R.layout.keypad_layout, null);
builder.setView(mView);
final TextView key8 = (TextView) mView.findViewById(R.id.t9_key_8);
key8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do something
}
});
用其他键重复我对 key8 所做的操作
原来,AlertDialog
returns一个view
AlertDialog dialog = builder.create();
dialog.show();
mPasswordField = (EditText) dialog.findViewById(R.id.password_field);
这对我有用。