向 MyMessageDialog 类添加一个接口以传回值:
public interface MyMessageDialogListener {
public void onClosed(String ship, String scientist, String email, String volume, String color);
}
创建对话框布局时存储它并提取 EditText 值,并通过 OK 按钮 onClick 内的监听器将它们传回:
public class MyMessageDialog {
public interface MyMessageDialogListener {
public void onClosed(String ship, String scientist, String email, String volume, String color);
}
@SuppressLint("NewApi")
public static AlertDialog displayMessage(Context context, String title, String message, final MyMessageDialogListener listener){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
LayoutInflater inflater = LayoutInflater.from(context);
builder.setTitle(title);
builder.setMessage(message);
final View layoutView = inflater.inflate(R.layout.custom_view, null);
builder.setView(layoutView);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// get the edit text values here and pass them back via the listener
if(listener != null)
{
EditText text1 = (EditText)layoutView.findViewById(R.id.shipNameEditText);
EditText text2 = (EditText)layoutView.findViewById(R.id.scientistEditText2);
EditText text3 = (EditText)layoutView.findViewById(R.id.emailEditText3);
EditText text4 = (EditText)layoutView.findViewById(R.id.volumeEditText4);
EditText text5 = (EditText)layoutView.findViewById(R.id.colourEditText4);
listener.onClosed(text1.getText().toString(),
text2.getText().toString(),
text3.getText().toString(),
text4.getText().toString(),
text5.getText().toString());
}
dialog.cancel();
}
});
builder.show();
return builder.create();
}
}
当您调用对话框并使用它来接收字符串时创建侦听器的实例:
MyMessageDialog.displayMessage(SearchResult.this, "Sample Info", "Required",
new MyMessageDialog.MyMessageDialogListener() {
public void onClosed(String ship, String scientist, String email, String volume, String color)
{
// store / use the values here
}
});