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();
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值