如何从AlertDialog显示Toast?

Roo*_*atu 4 android toast android-alertdialog

当用户单击"保存"按钮时,会AlertDialog出现一个并要求用户输入文件名的文本.

如果用户在没有指定名称的情况下单击肯定按钮("确定"),我想显示要求他们这样做的祝酒词,并保持AlertDialog打开状态.但是吐司从不显示,对话框关闭.

这里的代码AlertDialog是:

    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle(R.string.save_game);
    alert.setMessage(R.string.request_name);

    // Set an EditText view to get user input 
    final EditText input = new EditText(this);
    input.setHint(R.string.untitled);
    alert.setView(input);

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
      String value = input.getText().toString();
      if(value != null){
          // Do something with value      
      }
      else{
          Toast.makeText(context, R.string.no_name_given, Toast.LENGTH_SHORT).show();
      }
    }
    });

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // Canceled.
    }
    });

    alert.show();
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

谢谢!

Nig*_*ode 5

Public void showToast() {
    Toast.makeText(this, R.string.no_name_given, Toast.LENGTH_SHORT).show();
} 
Run Code Online (Sandbox Code Playgroud)

只需调用此方法,而不是在代码中的警告对话框中显示吐司.

else {
    showToast();
}
Run Code Online (Sandbox Code Playgroud)

要保持打开状态,请使用此方法

public void forceOpen() {

    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle(R.string.save_game);
    alert.setMessage(R.string.request_name);

    // Set an EditText view to get user input 
    final EditText input = new EditText(this);
    input.setHint(R.string.untitled);
    alert.setView(input);

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            String value = input.getText().toString();
            if(value != null) {
                // Do something with value      
            }
            else {
                Toast.makeText(context, R.string.no_name_given, Toast.LENGTH_SHORT).show();
            }
        }
    });

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            // Canceled.
        }
    });

    alert.show();

}
Run Code Online (Sandbox Code Playgroud)

只是重新打开它..不知道为什么它关闭但这将工作