【发布时间】:2013-01-12 03:41:25
【问题描述】:
我未能成功从自定义对话框中的 EditText 对象获取输入。
public class SetCityDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater factory = LayoutInflater.from(MainActivity.this);
final View view = factory.inflate(R.layout.city_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.city_dialog, null))
// Add action buttons
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int id) {
//This is the input I can't get text from
EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text);
//query is of the String type
query = inputTemp.getText().toString();
newQuery();
getJSON newData = new getJSON();
newData.execute("Test");
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
SetCityDialog.this.getDialog().cancel();
}
});
return builder.create();
}
}
我没有遇到任何异常,但变量查询设置为空字符串。 任何帮助都会很棒。
【问题讨论】:
-
你试过
EditText inputTemp = (EditText) builder.findViewById(R.id.search_input_text); -
是的,Eclipse 说要将 builder 转换为 Activity 类型,但遗憾的是这并不能解决问题。
-
然后将
builder.setView(inflater.inflate(R.layout.city_dialog, null))更改为builder.setView(view) -
重点是使用相同的视图来访问您为 AlertDialog 设置的 UI 元素
-
@ρяσѕρєяK 谢谢。成功了。
标签: java android xml dialog android-edittext