自定义警报对话框未定义方法

时间:2012-07-25 10:59:47

标签: android dialog alertdialog

我是Android新手,我想让这个自定义对话框正常工作,我在showDialog& removeDialog表示方法removeDialog(int)未定义类型new DialogInterface.OnClickListener

onReceive方法:

showDialog(DIALOG_TEXT_ENTRY);

代码:

    private static final int MY_PASSWORD_DIALOG_ID = 0;

    MediaPlayer mp;
    Context context;   

    protected Dialog onCreateDialog(int id, Context context) {

        Dialog dialog = null;
        switch(id) {
        case MY_PASSWORD_DIALOG_ID:
            LayoutInflater factory = LayoutInflater.from(context);

            final View textEntryView = factory.inflate(R.layout.password_dialog, null);

            final EditText password1 = (EditText) textEntryView.findViewById(R.id.inputPassword);

            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setTitle("Enter Password");
            builder.setView(textEntryView);

            builder.setPositiveButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int whichButton) {
                      removeDialog(MY_PASSWORD_DIALOG_ID);
                   }
                });

                AlertDialog passwordDialog = builder.create();
                return passwordDialog; 
        }
        return null;
    }

5 个答案:

答案 0 :(得分:2)

使用

dialog.dismiss();

而不是

removeDialog(MY_PASSWORD_DIALOG_ID);

你无法在BroadcastReceiver中显示一个对话框。

但是,如果你想显示一个弹出屏幕,那么用Dialog主题创建一个活动。

答案 1 :(得分:1)

您也可以使用

builder.setPositiveButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int whichButton) {
                       dialog.cancel(); 
                   }
                });

按钮点击它应该可以正常工作

也可以参考此链接

http://developer.android.com/guide/topics/ui/dialogs.html#AddingButtons

答案 2 :(得分:0)

您应该使用dialog.dismiss();而不是removeDialog()方法。

答案 3 :(得分:0)

见下文。使用 dismiss();

builder.setPositiveButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int whichButton) {
      dismiss();
   }
};

这样称呼showDialog(MY_PASSWORD_DIALOG_ID);

请参阅此Create Custom Dialog tutorial

@Override
protected Dialog onCreateDialog(int id) {
 // TODO Auto-generated method stub

 screenDialog = null;
 switch(id){
 case(ID_SCREENDIALOG):
  screenDialog = new Dialog(this);
  screenDialog.setContentView(R.layout.screendialog);
  bmImage = (ImageView)screenDialog.findViewById(R.id.image);
  TextOut = (TextView)screenDialog.findViewById(R.id.textout);
  btnScreenDialog_OK = (Button)screenDialog.findViewById(R.id.okdialogbutton);
  btnScreenDialog_OK.setOnClickListener(btnScreenDialog_OKOnClickListener);
 }
 return screenDialog;
}

答案 4 :(得分:0)

使用dialog.dismiss();

请参阅以下链接 http://developer.android.com/guide/topics/ui/dialogs.html