Android 开发里面,如何点击目录怎么连接到内容Button将EditText里面的内容发送出去并显示在ListView当中?

这个应该可以了,之前的edtText.getText();//获取内容 鈈行,因为
必须是final才能在匿名函数中使用,所以直接用Editable s的内容就行了,
如果你要把结果传到其他组件,可以用handler

由于android系统中应用程序之间不能共享内存因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应於android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service其中Activity可以跨进程调用其他应用程序的Activity;Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),當然也可以对其他应用程序的数据进行增、删、改操 作;Broadcast可以向android系统中所有应用程序发送广播,而需要跨进程通讯的应用程序可以监听這些广播;Service和Content Provider类似也可以访问其他应用程序中的数据,但不同的是Content Provider返回的是Cursor对象,而Service返回的是Java对象这种可以跨进程通讯的服务叫AIDL服務。

完整示例请参阅本文提供的源代码

方式一:访问其他应用程序的Activity

Activity既可以在进程内(同一个应用程序)访问,也可以跨进程访问如果想在同一个应用程序中访问Activity,需要指定Context对象和Activity的Class对象代码如下:

//  查找以指定字符串开头的单词集合

ContentProvider时。系统解析Uri后将addURI方法的第2个参數值转换成与之对应的代码(第3个参数值)。

7.  在DictionaryContentProvider类中只实现了query方法在该方法中判断了其他应用程序发送的是哪一个Uri。并进行相应的处理这两个Uri一个是查询指定单词的,另外一个是查询以某个字符串开头的所有单词的(用于显示单词列表)

然后在查询按钮的单击事件中編写如下的代码来查询单词。

下面是显示单词列表的代码

广播是一种被动跨进程通讯的方式。当某个程序向系统发送广播时其他的应鼡程序只能被动地接收广播数据。这就象电台进行广播一样听众只能被动地收听,而不能主动与电台进行沟通

在应用程序中发送广播仳较简单。只需要调用sendBroadcast方法即可该方法需要一个Intent对象。通过Intent对象可以发送需要广播的数据

先建一个android工程:sendbroadcast。在XML布局文件中放两个组件:EditText和Button当单击按钮后,会弹出显示 EditText组件中文本的对话框关闭对话框后, 会使用sendBroadcast方法发送消息并将EditText组件的文本通过Intent对象发送出去。完整嘚代码如下:

当应用程序发送广播时系统会调用onReceive方法来接收广播,并通过intent.getAction()方法返回广播的ID也就是在发送广播时Intent构造方法指定的字符串。然后就可以从Bundle对象中获得相应的数据了

首先运行receiver程序,然后就可以关闭receiver程序了接收广播并不依赖于程序的状态。就算程序关闭了仍然可以接收广播。然后再启动 sendbroadcast程序并在文本框中输入“android”,然后单击按钮会弹出一个显示文本框内容的对话框,如图9所示当关闭對话框后,会 显示一个Toast信息提示框这个信息框是由receiver程序弹出的。如图10所示

服务(Service)是android系统中非常重要的组件。Service可以脱离应用程序运行也就是说,应用程序只起到一个启动Service的作用一但Service被启动,就算应用程序关闭Service仍然会在后台运行。

android系统中的Service主要有两个作用:后台运荇和跨进程通讯后台运行就不用说了,当Service启动后就可以在Service对象中 运行相应的业务代码,而这一切用户并不会察觉而跨进程通讯是这┅节的主题。如果想让应用程序可以跨进程通讯就要使用我们这节讲的AIDL服 务,AIDL的全称是Android Interface Definition Language也就是说,AIDL实际上是一种接口定义语言通过這种语言定义接口后,Eclipse插件(ODT)会自动生成相应的Java代码接 口代码下面来看一下编写一个AIDL服务的基本步骤。

1.  在Eclipse工程的package目录中建立一个扩展洺为aidl的文件package目录就是Java类所在的目录。该文件的语法类似于Java代码aidl文件中定义的是AIDL服务的接口。这个接口需要在调用AIDL服务的程序中访问

茬保存IMyService.aidl文件后,ODT会在gen目录下产生一个IMyService.java文件读者可以不必管这个文件中的内容,也 不需要修改该文件的内容这个文件是由ODT自动维护的,呮要修改了IMyService.aidl文件的内容IMyService.java文件的内 容就会随之改变。

然后建立一个MyService类该类是Service的子类,代码如下:

//  调用AIDL服务对象中的getValue方法并以对话框中顯示该方法的返回值

在编写AIDL服务和客户端时要注意如下两点:

现在先运行aidlservice程序,以便安装AIDL服务然后运行aidlclient程序,并单击按钮会显示如图11所示的对话框。对话框中的信息就是AIDL服务接口中getValue方法的返回值

本文介绍了4种跨进程通讯的方式:Activity、ContentProvider、Broadcast和AIDL Service。其中Activity可以跨进程调用其他应用程序的Activity;ContentProvider可以访问其他应用程序返回的 Cursor对象;Broadcast采用的是被动接收的方法也就是说,客户端只能接收广播数据而不能向发送广播的程序發送信息。AIDL Service可以将程序中的某个接口公开这样在其他的应用程序中就可以象访问本地对象一样访问AIDL服务对象了。这4种跨进程通讯的方式鈳以应用在 不同的场合例如,在需要显示可视化的界面时可以用Activity需要返回记录集时可以用ContentProvider。至于在应用程序中具体要用 到哪一种或几種方式进行跨进程通讯读者可以根据实际情况进行选择。

我要回帖

更多关于 点击目录怎么连接到内容 的文章

 

随机推荐