读书人

findViewById()调用组件回来nullget

发布时间: 2012-06-28 15:20:04 作者: rapoo

findViewById()调用组件返回null,getText()无法执行,程序未报错
下面的程序是创建一个对话框,有两个EditText组件,用于填写RSS名称和RSS地址,点击按钮获取输入的数据。第十二行、十三行代码要注意。

EditText nameText = (EditText)view.findViewById(R.id.rss_name_edit);EditText addressText = (EditText)view.findViewById(R.id.rss_address_edit);
这一句代码,不能直接用
EditText nameText = (EditText)findViewById(R.id.rss_name_edit);
?这样nameText只能得到null值。接下来的getText()自然执行不下去了。而且程序不会报错。因为findViewId是默认在当前activity的默认布局文件寻找该组件的。应当将该组件所在的布局文件定义出来,再通过该布局文件获取组件。如下:
LayoutInflater inflater = LayoutInflater.from(context);final View view = inflater.inflate(R.layout.add_rss, null);
EditText nameText = (EditText)view.findViewById(R.id.rss_name_edit);
源程序如下:
private Dialog builderDialog1(Context context) {LayoutInflater inflater = LayoutInflater.from(context);final View view = inflater.inflate(R.layout.add_rss, null);AlertDialog.Builder dialog = new AlertDialog.Builder(context);dialog.setIcon(R.drawable.add);dialog.setTitle(R.string.dialog_input_rss_name);dialog.setView(view);dialog.setPositiveButton(R.string.alert_ok, new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {EditText nameText = (EditText)view.findViewById(R.id.rss_name_edit);EditText addressText = (EditText)view.findViewById(R.id.rss_address_edit);String rss_name = nameText.getText().toString();String rss_url = addressText.getText().toString();if(rss_name.equals("")) {Toast.makeText(ActivityRssList.this, ":( RSS名称不能为空!", Toast.LENGTH_SHORT).show();}else if(!URLUtil.isNetworkUrl(rss_url)) {Toast.makeText(ActivityRssList.this, ":( RSS地址格式不正确!", Toast.LENGTH_SHORT).show();}else {if(dbAdapter.saveRSS(rss_url, rss_name, type_id)) {Toast.makeText(ActivityRssList.this, "添加成功:)!", Toast.LENGTH_SHORT).show();}else {Toast.makeText(ActivityRssList.this, "对不起,添加失败了:( 请重新添加!", Toast.LENGTH_SHORT).show();}}showRSSList(); //刷新rss列表}});dialog.setNegativeButton(R.string.alert_cancel, new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {}});return dialog.create();}

读书人网 >移动开发

热点推荐