我的自定义对话框有问题。
我的对话框由TextView
,EditText
和“确定”按钮组成。单击“确定”后,它应从EditText字段获取文本并将其分配给活动中定义的字符串变量“name”。
一切似乎都有效,没有错误等,但“text”总是一个空字符串。
我读了一些关于这些问题的话题,但是我不确定我应该在这里做些什么调整。
我对Android编程很陌生,所以如果有人能向我解释这个问题,我将不胜感激。提前谢谢。
final Dialog dialog = new Dialog(MyActivity.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Title");
final View layout = View.inflate(this, R.layout.custom_dialog, null);
Button button = (Button) dialog.findViewById(R.id.dialog_ok);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText edit=(EditText)layout.findViewById(R.id.dialog_edit);
String text=edit.getText().toString();
name=text;
dialog.dismiss();
}
});
dialog.show();
答案 0 :(得分:50)
如果要将xml文件扩展到用于创建自定义版本的对话框,可以使用以下代码从用户获取两个输入
LayoutInflater linf = LayoutInflater.from(this);
final View inflator = linf.inflate(R.layout.twoinputs, null);
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Tilte");
alert.setMessage("Message");
alert.setView(inflator);
final EditText et1 = (EditText) inflator.findViewById(R.id.editText1);
final EditText et2 = (EditText) inflator.findViewById(R.id.editText2);
alert.setPositiveButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
String s1=et1.getText().toString();
String s2=et2.getText().toString();
//do operations using s1 and s2 here...
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show();
答案 1 :(得分:29)
您正在为不需要的布局进行充气。我修复了你的代码,因为我看到我删除了你膨胀的行,并改变了你试图找到EditText视图的行。
final Dialog dialog = new Dialog(MyActivity.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Title");
Button button = (Button) dialog.findViewById(R.id.dialog_ok);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText edit=(EditText)dialog.findViewById(R.id.dialog_edit);
String text=edit.getText().toString();
dialog.dismiss();
name=text;
}
});
dialog.show();
答案 2 :(得分:2)
替代matsjoe和krishna(两者都有效):
if (dgView.DataSource == null) return;
((DataTable)dgView.DataSource).Rows.Clear();
((DataTable)dgView.DataSource).Columns.Clear();
Kf个
答案 3 :(得分:0)
希望它会对您有所帮助。
private void inputFromDialog() {
final Dialog dialog = new Dialog(SplashActivity.this);
dialog.setContentView(R.layout.view_dialog);
dialog.setTitle("Title");
dialog.setCancelable(false);
dialog.show();
Button button = (Button) dialog.findViewById(R.id.continue_BTN);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText inputET=(EditText)dialog.findViewById(R.id.input_ET);
if (inputET.getText().toString().equals("")){
inputET.setError("This field is required");
}else {
mssid = inputET.getText().toString();
dialog.cancel();
Toast.makeText(SplashActivity.this, mssid, Toast.LENGTH_SHORT).show();
}
}
});
}
答案 4 :(得分:-10)
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
http://developer.android.com/training/basics/firstapp/starting-activity.html