当前位置:首页 > 编程开发

Android界面互调具体应用方式解析

webgou16年前 (2010-08-08)编程开发185

Android操作系统中,对于界面的一些操作是用户需要掌握的最基础的知识点。我们可以通过这篇文章对Android界面互调的方法介绍,来初步了解一下再Android系统中对于界面的一些应用技巧。

学到现在,我们发现,我们的实际程序都只在一个界面里转,但事实,我们需要写一些Android界面互调的页面,比如打电话界面,我们可能要弹出一个选择电话号码的列表等等。

在Windows界面中,大家都知道分成模式对话框和无模工对话框,但在手机界面中,我们也不能想象到,我个界面是很难同时显示在一个界面中的,因 主屏幕很小。所以说在Android系统中,界面跟我们的Windows还是有不少区别的,Android界面中同一时间只能显示一个界面 (Activity),但允许子界面中再调子界面,所以这样想来,在一个开启的程序中,如果调用了子界面后,其实在后面是生成了一个界面栈,如下图可以形 式象的表示出:

在系统中,有一个优化处理方式是,一个程序可以且只有一个Activity,如果调用了子界面后,再把该程序隐藏到后台,如果系统不足时,系统会将弹出的Activity收回,只剩下一个最原始的Activity,这个主Activity,也可以说是程序的入口。

说了这么多,我们开始看看Android界面互调的具体实现方法,在一个Activity中怎样弹出另一个Activity吧:

通常,依我们的常规相当,启动界面无非就是指定一个新界面的具体类,然后调用某个方法咯,看代码:

  1. Intent intent = new Intent(MainActivity.this, NewForm.class);  
  2. startActivity(intent);//或startActivityForResult(intent, 1); 

这代码码到并不复杂,我们一项项分析:

Intent

这个具体我也不清楚怎么来翻译,主要就是用于界面之间的沟通吧,当然可能还有更多功能,以后再慢慢了解去!new Intent(MainActivity.this, NewForm.class);这里的创建就可以看到我们将NewForm这个类传入了。

startActivity

启动界面函数,传入的参数也就是我们定义好的intent。

startActivityForResult

这也是一个启动界面的函数,但与startActivity的区别就是,这个方法启动界面后,这个界面可以将返回值传入到父窗体中。至于这个参数1,目前还不是很了解,先用着吧。

其实这一步还是容易让我们接受的,好,再了解第二步,怎样传递参数?比如,我想做一个界面弹出一个人员列表,选一个人后,关闭界面,然后主界面就要知道我选择了哪一个值。

在Android界面互调实现中,我们传值采用的是Uri,这是一个用字符串拼接的信息,在系统中也有这么一个类,为什么不用Object而用 Uri一个字符串呢,其实Object传递的信息固然多,但不规范,这个程序用Object来包装后,其他程序就不知道怎么样解释你这个Object了。 而Uri一个字符串可用的将各种资源HTML文档、图像、视频片段、程序等由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行定位。

Uri分成三部份:访问资源的命名机制;存放资源的主机名;资源自身的名称,由路径表示。

比如“Http://www.baidu.com/text/xxx.html”这里面Http是命名机制(协议名),www.baidu.com 是资源位置,text/xxxlhtml是资源名称。在Android系统中如“content://contacts/1”表示,在系统中 contacts(联系人)中的第1号,就很容易定位到一个资源了,采用了这些共用的格式后,就可以与系统中的其他处理程序来进行无缝交互,比如

  1. Intent intent = new Intent(Intent.ACTION_DIAL,  
  2. Uri.parse(“tel:555-2368”));  
  3. startActivity(intent); 

就可以用来启动一个拨号程序。

定义好了参数格式,我们在启用界面里就可以用

  1. Uri data = Uri.parse("xxxx");  
  2. intent.setData(data);//传递参数 

在子界面中,我们用

  1. Intent intent = getIntent();  
  2. Uri data = intent.getData(); 

来接收传来的参数

在子界面中,关闭界面时,也有确定和取消之分,

我们在点击确定按钮时可以这样处理:

  1. Uri data = Uri.parse("Content://" + edit.getText());  
  2. Intent result = new Intent(null, data);  
  3. setResult(RESULT_OK, result);//传确定信息,和参数  
  4. finish(); 

当点击取消按钮时,这样处理:

  1. setResult(RESULT_CANCELED, null); 
  2. //传取消信息,和参数  
  3. finish(); 

在父界面中,我们通过一个public void onActivityResult(int requestCode, int resultCode, Intent data)继承函数来处理所有子界面的返回消息。这里面传来了请求代码,返回代码,和返回值,比如:

  1. public void onActivityResult(int requestCode, 
    int resultCode, Intent data) {  
  2. super.onActivityResult(requestCode, resultCode, data);  
  3. if (resultCode == Activity.RESULT_OK) {  
  4. Uri horse = data.getData();  
  5. TextView txt = (TextView)findViewById(R.id.TextView01);  
  6. txt.setText(horse.toString());  
  7. }  

Android界面互调的相关操作方法就为大家介绍到这里。

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=225

标签: android界面
分享给朋友:

“Android界面互调具体应用方式解析” 的相关文章

DSDT是什么

     什么是DSDT呢,它是ACPI其中一个表。什么是ACPI呢,它是BIOS的一个高级功能模块。下面咱稍微详细的从最大的开始说: 一、首先,BIOS(略) 二、ACPI是Hewlett-Packard, Intel, Microsoft, Phoenix, 和T…

突破障碍 用Google作代理畅游网络

突破障碍 用Google作代理畅游网络[from:http://tech.163.com/07/0429/09/3D83J91T000917GE.html]通常,当你在查看一个网页时,你计算机上的浏览器软件就会连接到目标服务器,下载页面的数据,接着再将它呈现在你的面前。一般情况下,这确实是访问网站的…

网游外挂--内容

外挂,代替人操作的过程的程序.编写出外挂,除了需要扎实的编程的基础外,还需要对游戏内容很熟悉,这样才能写出好的外挂.本人只对技术做初步解剖,不牵涉法律方的争议.…

Eclipse 操作MySQL数据

下面是MySQL 5.1参考手册里给的一些说法:INSERT语句的速度 插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例:˂连接:(3) 发送查询给服务器:(2) 分析查询:(2) 插入记录:(1x记录大小) 插入索引:(1x索引) 关闭:(1) 这不考虑打开表的初始开销,每个并发运行的…

Android术语列表概览

1,apk扩展名:apk是Android包的扩展名,一个Android包包含了与某个Android应用程序相关的所有文件,apk文件将 AndroidManifest.xml文件、应用程序代码(dex文件)、资源文件和其他文件组成一个压缩包,一个项目只能打包压缩成一个apk文件。2, dex扩展名:…

Java基础 三步学会Java Socket编程(三)

http://java.ccidnet.com/art/3539/20070606/1103881_1.html第三步 实现信息共享:在Socket上的实时交流网络的伟大之一也是信息共享,Server可以主动向所有Client广播消息,同时Client也可以向其它Client发布消息。下面看看如何开…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。