Android 自定义对话框中EditText的值

Android 自定义对话框中EditText的值,android,dialog,Android,Dialog,我有ListActivity,单击每个项目时会出现一个自定义对话框。自定义对话框包含微调器和EditText。现在我无法获取EditText的值,而EditText的调试值为空或“” protectedvoid onListItemClick(列表视图l、视图v、整数位置、长id) { super.onListItemClick(左、右、位置、id); 位置列表=位置; HashMaptemp=(HashMap)list.get(位置); LayoutFlater充气器=(LayoutFlate

我有ListActivity,单击每个项目时会出现一个自定义对话框。自定义对话框包含微调器和EditText。现在我无法获取EditText的值,而EditText的调试值为空或“”

protectedvoid onListItemClick(列表视图l、视图v、整数位置、长id)
{
super.onListItemClick(左、右、位置、id);
位置列表=位置;
HashMaptemp=(HashMap)list.get(位置);
LayoutFlater充气器=(LayoutFlater)CommonScreen6.this.getSystemService(布局充气器服务);
视图布局=充气机。充气(右布局。应答屏幕,空);
AlertDialog.Builder AlertDialog=新建AlertDialog.Builder(CommonScreen6.this);
alertDialog.setTitle(“选择选项”);
alertDialog.setView(布局);
微调器应答列表=(微调器)布局.findViewById(R.id.spinnerAnswerList);
ArrayAdapter Adapter Swertype=新的ArrayAdapter(CommonScreen6.this,android.R.layout.simple_spinner_item,(ArrayList)temp.get(Constants.answerDesc));
adapterAnswerType.setDropDownViewResource(android.R.layout.select\u dialog\u singlechoice);
应答列表.setAdapter(adapterAnswerType);
answerList.setOnItemSelectedListener(此);
ArrayList answerDescList=(ArrayList)temp.get(Constants.answerDesc);
answerList.setSelection(answerDescList.indexOf(temp.get(Constants.defaultAnswerDesc));
alertDialog.setPositiveButton(“提交”,新建DialogInterface.OnClickListener())
{
@凌驾
public void onClick(DialogInterface dialog,int which)
{
LayoutFlater充气器=(LayoutFlater)CommonScreen6.this.getSystemService(布局充气器服务);
视图布局=充气机。充气(右布局。应答屏幕,空);
EditText=(EditText)layout.findViewById(R.id.remark);
String remark=editText.getText().toString();
HashMaptemp=(HashMap)list.get(positionList);
温度输入(常数、备注、备注);
adapter.notifyDataSetChanged();
}
});
}

您没有获得任何值的原因是,您正在读取值之前重新调整布局,从而将值重置为默认值。 我假设您希望在提供给onListItemClick方法的
v
参数上查找dviewById,而不是重新展开布局

也就是说,而不是

LayoutInflater inflater = (LayoutInflater) CommonScreen6.this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.answer_screen,null);
EditText editText=(EditText)layout.findViewById(R.id.remark);
试试像这样的东西

EditText editText=(EditText)v.findViewById(R.id.remark);
您可能需要将
v
变量设为final,以使其生效。
我希望这有帮助。

你的逻辑非常正确。但是EditText=(EditText)v.findViewById(R.id.remark);不起作用。任何方法都非常感谢dude:)还可以解释一下inflater.inflate的作用吗?文档中描述了在LayoutFlater上调用inflate方法:它基本上将XML文件中定义的视图转换为该视图的具体实例,作为Java对象。
EditText editText=(EditText)v.findViewById(R.id.remark);