好文档 - 专业文书写作范文服务资料分享网站

Android(经典实例)

天下 分享 时间: 加入收藏 我要投稿 点赞

Button btn = (Button)findViewById(R.id.go); btn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

Intent intent = new Intent();

intent.setClass(HelloThree.this, HelloThreeB.class); startActivity(intent); finish(); } });

Button btnExit=(Button)findViewById(R.id.exit);

btnExit.setOnClickListener(new View.OnClickListener(){

public void onClick(View v){ HelloThree.this.finish(); } }); }

这里的跳转功能用 Intent 来操作, 它的最简单用法就是用函数 setClass()设置跳转 前后两个 Activity 类的实例,然后调用 Activity 自己的 startActivity(intent)即可。 最后一句 finish()表示将当前 Activity 关掉 (如果不关掉会如何?你可以自己试一下看 效果,事实上有时我们是不需要关掉当前 Activity 的)。

然后,我们同样弄一个 Activity 类 HelloThreeB,代码与前面的差不多,只是将 setClass 的两个参数反一下, 这样就可以简单地实现在两个 Activity 界面中来回切换的

功能了。

3. 如果我想在两个 Activity 之间进行数据交换,怎么办?

前例中的 startActivity()只有一个参数, 如果需要向新打开的 Activity 传递参数, 我们得换一个函数了, Android 提供了 startSubActivity(Intent,int)这个函数来实现 这个功能。

函数原型为 : public void startSubActivity(Intent intent, int requestCode)

这里的 requestCode 用来标识某一个调用,一般由我们定义一个常量。

如何把参数传过去呢?Intent 类在提供 setClass()函数的同时也提供了一个 setData()函数。 函数原型为:public Intent setData(ContentURI data)

参数类型是 ContentURI,它的详细内容下回再分析,现在就把它当成一个 String 类型来 用吧。

参数带到新的 Activity 后, 同样用 Activity.getIntent()函数可以得到当前过来的 Intent 对象,然后用 getData()就取到参数了。

把参数带回来的方法是 Activity.setResult(),它有几个形式,现在先看最简单的 一个吧。 函数原型是:public final void setResult(int resultCode, String data)

resultCode 是返回代码,同样用来标识一个返回类型,而 data 则是它要返回的参数。

在原来的 Activity 中的事件处理回调函数 onActivityResult,会被系统调用,从它 的参数里可以得到返回值。 函数原型为 : protected void onActivityResult(int requestCode, int

resultCode,String data, Bundle extras)

这里的requestCode就是前面启动新Activity时的带过去的requestCode, 而resultCode

则关联上了 setResult 中的 resultCode,data 是参数,extras 也是一个很重要的东西, 后面再研究一下它的作用。

下面,我们来看一下代码吧,先看看 HelloThree 中的代码: public void setViewOneCommand() {

Button btn = (Button)findViewById(R.id.go); btn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) { try{

Intent intent = new Intent();

intent.setClass(HelloThree.this, HelloThreeB.class); intent.setData(new ContentURI(\

startSubActivity(intent,REQUEST_TYPE_A); }

catch(Exception ex){} } });

Button btnExit=(Button)findViewById(R.id.exit);

btnExit.setOnClickListener(new View.OnClickListener(){

public void onClick(View v){

HelloThree.this.finish(); } }); }

protected void onActivityResult(int requestCode, int resultCode,

String data, Bundle extras)

{

if (requestCode == REQUEST_TYPE_A) {

if (resultCode == RESULT_OK) { Log.v(TAG,data);

TextView txt = (TextView)findViewById(R.id.txt); txt.setText(data); } } }

这里的 REQUEST_TYPE_A 是我们定义的一个常量。在 onActivityResult 中用它与 RESULT_OK 一起作为条件判断如何处理返回值,这里只是简单将 TextView 显示值换成传 来的字串。

再来看看另一个 HelloThreeB 类的实现代码: private Intent i;

protected void onCreate(Bundle icicle) { super.onCreate(icicle);

setContentView(R.layout.second);

i = getIntent();

android.util.Log.v(TAG,\

Button btn = (Button)findViewById(R.id.go);

btn.setOnClickListener(new View.OnClickListener(){

public void onClick(View v){

String result=HelloThreeB.this.i.getData().toString()+\

Two\

HelloThreeB.this.setResult(RESULT_OK,result); finish(); } });

TextView v = (TextView)findViewById(R.id.txt); v.setText(\

}

在按钮处理事件中,从 Intent 取出参数,处理一下再用 setResult 返回给前一个 Activity 即可。

编译运行即可。 来源:http://www.sf.org.cn/Android/lumen/20977.html Android 学习笔记(3)-Activity 的生命周期

注意到在 Activity 的 API 中有大量的 onXXXX 形式的函数定义,除了我们前面用到 的 onCreate 以外,还有 onStart,onStop 以及 onPause 等等。从字面上看,它们是一些

Android(经典实例)

Buttonbtn=(Button)findViewById(R.id.go);btn.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){Intentintent=newIntent();intent.setClass(Hell
推荐度:
点击下载文档文档为doc格式
447mj85z6s62a888ee4i
领取福利

微信扫码领取福利

微信扫码分享