下面的程序是创建一个对话框,有两个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();
}
分享到:
相关推荐
在Android平台上,开发一个能够发送短信的程序是一个常见的需求,尤其对于那些希望构建通信功能的应用来说。本教程将详细介绍如何创建一个简单的Android应用,用于发送短信。我们将遵循以下几个步骤: 1. **创建...
null, null, null, null, null); return this.convertToPeople(results);//将results传给convertToPeople方法中的形参,并将peoples数组的值返回 } public People_mll[] queryIdData(long id){//定义一个类型...
如果需要向调用者返回数据,可以使用`setResult()`方法。示例代码如下: ```java // 设置返回结果 Intent data = new Intent(); data.putExtra("result", "some result data"); setResult(RESULT_OK, data); ...
String password = findViewById(R.id.password_edittext).getText().toString(); savePassword(password); // 调用上面的保存方法 } }); findViewById(R.id.load_button).setOnClickListener(new View....
- 使用ViewHolder模式,减少findViewById的调用。 - 使用AsyncTask或Loader异步加载数据,避免UI阻塞。 - 使用SparseBooleanArray记录已选中的项,而不是在列表项中保存状态,减少内存占用。 - 在数据量较大时,考虑...
在Android开发中,服务(Service)是一种特殊类型的组件,它可以在后台长时间运行,即使用户界面已经关闭。在本例中,我们将创建一个进程内的服务,其主要任务是接收两个整数参数并比较它们的大小。服务会提供一个名...
* 6,对返回按钮监听退出程序 */ public class MainActivity extends Activity { // 定义帮助类 private MyOpenHelper notesDB; // 定义数据库类 private SQLiteDatabase dbReader;// 读取 // 定义组件 ...
`ViewHolder`模式是为了减少findViewById的调用,提高性能。 此外,为了实现类似微信的效果,我们还需要处理一些细节,比如: 1. 根据消息的方向(发送或接收)来调整布局的对齐方式。 2. 添加消息气泡的背景,...
`ViewHolder`模式就是为了解决这个问题而设计的一种优化策略,它主要应用于`ListView`、`RecyclerView`等列表组件。本篇文章将详细介绍`ViewHolder`的概念,它的实现方式,以及如何在实际项目中应用。 `ViewHolder`...
没有这个权限,应用将无法执行短信发送操作。 接下来,我们来看如何创建发送短信的UI。通常,会有一个EditText用于输入短信内容,一个Button用于触发发送操作。在布局XML文件中,可以这样定义它们: ```xml ...
在Android应用程序中,读写txt文本文件是常见的需求,特别是在数据持久化或用户交互时。本文将详细讲解如何使用`context.openFileInput()`和`context.openFileOutput()`这两个方法来实现这一功能。这两个方法属于`...
在Android开发中,UI组件是构建用户界面的关键部分,其中包括各种对话框,如AlertDialog。`AlertDialog`是一个轻量级的对话框,用于显示警告、确认或提供简单的选择给用户。本教程将深入探讨如何自定义`AlertDialog`...
在Android平台上开发一个简单的计算器应用是一项基础而实用的任务,它能帮助我们理解Android应用程序的基本架构、UI设计以及事件处理机制。下面将详细讲解这个过程,包括主要涉及的技术点和步骤。 首先,Android...
`onCreate()`用于首次创建数据库时执行的初始化操作,而`onUpgrade()`则在数据库版本升级时被调用。 ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME...
4. **查询(Query)**:使用`query()`方法获取数据,结果通常以Cursor对象返回。遍历Cursor并显示数据,例如在ListView或RecyclerView中。 例如,查询按钮的点击事件可能如下: ```java Button queryBtn = ...
在Android应用开发中,SQLite是一个重要的组成部分,它是一个轻量级的、嵌入式的数据库,非常适合用于存储应用程序中的数据。本教程将通过一个简单的“SQLiteDemo”实例,讲解如何在Android中实现SQLite数据库的注册...
- `Fragment`是Android应用程序组件,它可以在Activity中运行,允许你创建动态和灵活的用户界面。在本例中,`HomeFragment`继承自`Fragment`,并实现了特定的行为。 2. **Data Binding库**: - 使用`...
没有这个权限,应用将无法执行发送短信的操作。 接下来,我们来创建一个用于发送短信的Activity。首先,我们需要一个用户界面,通常包含一个输入框(EditText)用于输入电话号码和短信内容,以及一个按钮(Button)...
当用户给予许可后,`onRequestPermissionsResult()`方法会被调用,此时我们继续执行`sendSMS()`方法来发送短信。`sendTextMessage()`函数是发送短信的关键,它接受电话号码、消息内容、发送者、回复地址和额外的回调...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。ListView的魅力在于其高效的数据复用机制,通过convertView可以减少视图的创建,提高性能。然而,有时我们可能需要在一个ListView中显示不同...