我使用layoutInflater从布局创建自定义AlertDialog
。在这个布局中,我找到了我的按钮,并在这个按钮上设置了OnClickListener
。问题是,方法onClick
不存在DialogInterface
而我无法dialog.dissmiss
。如何将指针放在我的AlertDialog上,或者可能放在DialogInterface
上?
AlertDialog.Builder builder;
LayoutInflater inflater = (LayoutInflater) myApp.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.my_dialog, null);
((Button) layout.findViewById(R.id.downloadButton)).setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//in this, i want to dissmiss dialog
//some code
}
});
我不希望将指针保存在Dialog on Class属性上 - 也许其他方式存在? 谢谢:))
答案 0 :(得分:0)
您可以使用Dialog类以下列方式执行。
final Dialog dialog = new Dialog(MAinActivity.this);
dialog.setContentView(R.layout.login_popup);
Button dialogButtonOk = (Button) dialog.findViewById(R.id.dialogButtonOK);
dialogButtonOk.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
dialog.dismiss();
}
}
答案 1 :(得分:0)
我正在努力解决这个问题...我希望我没有删除任何与你正在做的事情无关的重要内容。
public class updateDialog extends AlertDialog implements AlertDialog.OnClickListener {
updateDialog(Context context, Object sent)
{
super(context,R.style.MyAlertDialogStyle);
// Inflate your view
View myView = getLayoutInflater().inflate(R.layout.update_sql,null);
// Set it to be the view
setView(myView);
// Set up buttons
setButton(BUTTON_NEGATIVE, context.getString(Cancel), this);
setButton(BUTTON_NEUTRAL,context.getString(R.string.Propose), this);
setButton(BUTTON_POSITIVE, context.getString(R.string.Restore), this);
}
// Handle buttons
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch (i)
{
case BUTTON_NEGATIVE:
// Dismiss the dialog.
dialogInterface.dismiss();
break;
case BUTTON_NEUTRAL:
break;
case BUTTON_POSITIVE:
break;
}
}
主要关键不是使用构建器,而是自己构建它。