Android 组件系列之Activity的传值和回传值.docx

上传人:b****5 文档编号:2890320 上传时间:2022-11-16 格式:DOCX 页数:16 大小:87.29KB
下载 相关 举报
Android 组件系列之Activity的传值和回传值.docx_第1页
第1页 / 共16页
Android 组件系列之Activity的传值和回传值.docx_第2页
第2页 / 共16页
Android 组件系列之Activity的传值和回传值.docx_第3页
第3页 / 共16页
Android 组件系列之Activity的传值和回传值.docx_第4页
第4页 / 共16页
Android 组件系列之Activity的传值和回传值.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Android 组件系列之Activity的传值和回传值.docx

《Android 组件系列之Activity的传值和回传值.docx》由会员分享,可在线阅读,更多相关《Android 组件系列之Activity的传值和回传值.docx(16页珍藏版)》请在冰豆网上搜索。

Android 组件系列之Activity的传值和回传值.docx

Android组件系列之Activity的传值和回传值

Android组件系列-----Activity的传值和回传值

在这篇随笔里将讲解Activity的传值和回传值。

一、通过startActivity来进行Activity的传值

在Android中,如果我们要通过一个Activity来启动另一个Activity,可以使用startActivity(Intentintent)方法来传入一个Intent对象,这个Intent对象我们可以精确的指定我们需要跳转的Activity上,或者通过Intent对象来指定我们要完成的一个action操作。

①.通过setClass方法来指定我们要跳转的Activity

Intentintent=newIntent();

intent.setClass(MainActivity.this,SecondActivity.class);

②.通过setAction方法来我们要完成的一个action操作

Intentintent=newIntent();

intent.setAction("com.xiaoluo.android_intent.second");

通过这种方式可以来指定我们的Intent对象要完成某个操作,这个操作可以是启动一个Activity,我们可以在AndroidManifest.xml中在元素下指定一个对象,然后其子元素声明一个元素,这样我们可以将这个action动作绑定到了这个Activity上,即Android操作系统会去找与intent对象中指定的action名字的对象,然后执行相应的动作,例如:

    

android:

name="com.xiaoluo.android_intent.SecondActivity"

android:

label="SecondActivity">

name="com.xiaoluo.android_intent.second"/>

name="android.intent.category.DEFAULT"/>

这样我们的Intent对象,在启动时,就会找到名字为 com.xiaoluo.android_intent.second的对象,来启动我们的SecondActivity。

我们来看看如何在Activity对象中进行值的传递,也是通过Intent对象的各种putExtra方法来进行传递:

MainActivity:

publicclassMainActivityextendsActivity

{

privateButtonbutton;

@Override

protectedvoidonCreate(BundlesavedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button=(Button)findViewById(R.id.button);

button.setOnClickListener(newButtonListener());

}

classButtonListenerimplementsOnClickListener

{

@Override

publicvoidonClick(Viewv)

{

//Intentintent=newIntent();

//intent.setClass(MainActivity.this,SecondActivity.class);

Intentintent=newIntent();

intent.setAction("com.xiaoluo.android_intent.second");

intent.putExtra("com.xiaoluo.android_intent.age",20); //第一个参数指定name,android规范是以包名+变量名来命名,后面是各种类型的数据类型

intent.putExtra("com.xiaoluo.android_intent.name","xiaoluo");

Bundlebundle=newBundle();  //  Bundle的底层是一个HashMap

bundle.putString("hello","world");

intent.putExtra("bundle",bundle);

startActivity(intent);

}

}

@Override

publicbooleanonCreateOptionsMenu(Menumenu)

{

//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.

getMenuInflater().inflate(R.menu.main,menu);

returntrue;

}

}

SecondActivity:

publicclassSecondActivityextendsActivity

{

privateTextViewtextView;

privatefinalStringTAG="SecondActivity";

@Override

protectedvoidonCreate(BundlesavedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.second);

textView=(TextView)findViewById(R.id.textView);

//得到跳转到该Activity的Intent对象

Intentintent=getIntent();

intage=intent.getIntExtra("com.xiaoluo.android_intent.age",10);

Stringname=intent.getStringExtra("com.xiaoluo.android_intent.name");

Bundlebundle=intent.getBundleExtra("bundle");

Stringworld=bundle.getString("hello");

Log.i(TAG,age+","+name+","+world);

textView.setText(name+":

"+age+","+world);

System.out.println(intent);

}

}

在第二个Activity对象中,可以通过getIntent()方法来得到跳转到这个Activity的Intent对象,然后通过Intent对象的各种getXXExtra方法来得到我们的传过来的值。

AndroidManifest.xml文件如下:

xmlversion="1.0"encoding="utf-8"?

>

android="

package="com.xiaoluo.android_intent"

android:

versionCode="1"

android:

versionName="1.0">

android:

minSdkVersion="8"

android:

targetSdkVersion="18"/>

android:

allowBackup="true"

android:

icon="@drawable/ic_launcher"

android:

label="@string/app_name"

android:

theme="@style/AppTheme">

android:

name="com.xiaoluo.android_intent.MainActivity"

android:

label="@string/app_name">

name="android.intent.action.MAIN"/>

name="android.intent.category.LAUNCHER"/>

android:

name="com.xiaoluo.android_intent.SecondActivity"

android:

label="SecondActivity">

name="com.xiaoluo.android_intent.second"/>

name="android.intent.category.DEFAULT"/>

这样我们就可以实现Activity直接的值的传递。

二、通过startActivityForResult方法来得到Activity的回传值

在一些情况下,我们通过Aactivity跳转到Bactivity上,这时希望Aactivtiy能从Bactivity上得到一些返回值,这个时候我们就不能使用startActivity方法了,而是使用startActivityForResult方法来完成我们的操作。

例如,我们希望完成下面一个功能,在MainActivity上,写上一个算术表达式,然后跳转到到第二个SecondActivity上,在这个Activity上将第一个Activity的表达式显示出来,然后我们可以输入我们的算术表达式结果,然后点击按钮,将这个结果值又返回给我们的MainActivity,并将结果填充到算术表达式中,具体看如下代码:

activity_main.xml:

android="

xmlns:

tools="

android:

layout_width="match_parent"

android:

layout_height="match_parent"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1