我正在尝试为用户弹出一个对话框,该对话框的正文中有两个按钮,底部有一个取消按钮。当用户单击两个按钮之一时,对话框将消失,点击取消将直接取消对话框。取消部分工作正常,但我不知道如何手动关闭对话框。这是我的代码:
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
Context mContext = getApplicationContext();
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.config_dialog,
(ViewGroup) findViewById(R.id.config_dialog));
Button connect = (Button) layout.findViewById(R.id.config_connect);
Button delete = (Button) layout.findViewById(R.id.config_delete);
alert = new AlertDialog.Builder(Configuration.this);
alert.setTitle("Profile");
connect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
trace("Connect" + Integer.toString(position));
toast("Connected");
SharedPreferences app_preferences =
PreferenceManager.getDefaultSharedPreferences(Configuration.this);
SharedPreferences.Editor editor = app_preferences.edit();
editor.putString("IP", fetch.get(position).IP);
editor.commit();
//Add dismiss here
}
});
delete.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
trace("Delete");
}
});
// Set layout
alert.setView(layout);
alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
当我尝试添加 alert.dismiss() 时,Eclipse 给我一个错误。 .dismiss() 也不会出现在警报的自动完成列表中。
最佳答案
Merlin 的回答是正确的,应该被接受,但为了完整起见,我将发布一个替代方案。
问题是您试图关闭 AlertDialog.Builder 的实例而不是 AlertDialog。这就是 Eclipse 不会为您自动完成该方法的原因。在 AlertDialog.Builder 上调用 create() 后,您可以关闭收到的 AlertDialog。
public class AlertDialogTestActivity extends Activity
{
AlertDialog alert;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button connect = new Button(this);
connect.setText("Don't push me");
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
alertBuilder.setTitle("Profile");
alertBuilder.setView(connect);
connect.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
alert.dismiss();
}
});
alert = alertBuilder.create();
}
}
关于android - 从 OnClick 中关闭 AlertDialog.Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6836183/