`
qilixiang012
  • 浏览: 202791 次
文章分类
社区版块
存档分类
最新评论

Android 启动其他Activity并返回结果

 
阅读更多

实现从一个Activity跳转到第二个Acitivity,返回结果在第一个Activity中显示。

先给出关键代码:

class MainActivityextends Activity

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt2 = (Button) findViewById(R.id.button2);
textView = (TextView)findViewById(R.id.textView1);
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(MainActivity.this,ThridIntent.class);
Bundle bundle = new Bundle();
startActivityForResult(intent,200);
}
});
}


@Override
protected voidonActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 200 && resultCode == 200){
String string = data.getStringExtra("check");
textView.setText(string);
}
}


class ThridIntent extends Activity:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thrid_intent);
radioGroup = (RadioGroup)findViewById(R.id.radioGroup1);
//单选按钮改变事件
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
Intent intent = getIntent();
RadioButton radioButton=(RadioButton) findViewById(radioGroup.getCheckedRadioButtonId());
String string = (String)radioButton.getText();
intent.putExtra("check", string);
setResult(200,intent);
finish();
}
});
}

代码说明:

启动、关闭Activity:

Activity启动其他Activity有如下两个方法:

startActivity(Intent intent) :启动其他Activity。

startActivityForResult(Intent intent,int requestCode):以指定的请求码requestCode启动Activity,而且程序会等到新启动Activity的结果(通过重写onActivityResult(..))方法来获取。

关闭Activity:

finish():结束当前Activity。

finishActivity(int requestCode):结束以startActivityForResult(Intent intent,int requestCode)方法启动的Activity。

使用Bundle在Activity之间交换数据:

Intent提供了多个重载的方法来“携带”额外的数据包:

putExtras(Bundle data):向Intent中放入需要“携带”的数据包。

Bundle getExtras():取出Intent所“携带”的数据包

putExtra(String name,Xxx value):向Intent中按key—value对的形式存入数据。

getXxxExtra(String name):从Intent中按key取出指定类型的数据。

上面方法中的Bundle就是一个简单的数据携带包,该Bundle对象包含了多个方法来存入数据和取出数据。

Bundle相关方法:

putXxx(String,Xxx data):向Bundle放入Int,Long等各种类型的数据

putSerializable(String,Serializable data):向Bundle中放入一个可序列化的对象

getXxx(String key):从Bundle取出Int,Long等各种类型的数据

getSerializable(String key,Serializable data):从Bundle取出一个可序列化的对象


activity_main.xml :

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_marginLeft="43dp"
android:layout_toRightOf="@+id/button1"
android:text="跳转返回结果" />

activity_thrid_intent.xml :

<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="14dp" >

<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton1" />

<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton2" />

<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton3" />
</RadioGroup>


AndroidManifest.xml:

<activity
android:name="com.coslay.intenttest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name="com.coslay.intenttest.ThridIntent"
android:label="@string/title_activity_thrid_intent" >
</activity>


代码说明:

配置Activity时通常指定如下属性:

name:指定该Activity的实现类的类名

icon:指定该Activity对应的图标

label:指定该Activity的标签

exported:指定该Activity是否允许被其他应用调用。如果将该属性设为true,那么该Activity将可以被其他应用调用。

launchMode:指定该Activity的加载模式,该属性支持standard,singleTop,singleTask,和singleInstance

除此之外,配置Activity时通常需要指定一个或多个<intent_fiilter.../>元素,该元素用于指定该Activity可响应的Intent。

分享到:
评论

相关推荐

    Android 从Activity中返回数据

    在实际的应用中,我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递数据类似,也可以采用前面4种方法,但是一般建议采用Intent对象的方式来返回数据,使用这种方式返回数据,需要...

    Android 启动activity的4种方式及打开其他应用的activity的坑

    Android启动的四种方式分别为standard,singleTop,singleTask,singleInstence。 standard是最常见的activity启动方式,也是默认的启动的方式。当启动一个activity的时候他将进入返回栈的栈顶。系统不会管栈内是否...

    Android 一次启动多个Activity (TaskStackBuilder)

    点击通知启动多个Activity.从启动Activity 返回不会退出app,而是返回到App 的MainActivity 或者其他Activity

    Android学习笔记-Activity篇

    三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的activity 2 四、关闭activity 2 五、管理Activity的生命周期 2 5.1 生命周期简介 2 5.2 保存activity状态 3 5.3 处理配置文件的改变 3 ...

    Android面试题-Activity A跳转Activity B,再按返回键,生命周期执行的顺序?

    Activity A跳转Activity B,再按返回键,A、B的生命周期执行顺序是什么? 当听到这个题目的时候,我得意地笑了笑,对于Activity的生命周期已经记熟的我,心想,为什么不直接问Activity的生命周期呢?于是想当然的说...

    034集-启动带返回结果的Activity

    034集-启动带返回结果的Activity,可以学习下 。

    案例八(启动带有返回值的activity

    案例八(启动带有返回值的activity

    Android中activity处理返回结果的实现方式

    为了实现这个功能,Android提供了一个机制,跳转到其他activity时,再返回,可以接受到其他activity返回的值,无需再start新的当前activity;下面的示例中,创建两个activity,其中在MainActivity中提示输入“您的...

    Android中调用另一个Activity并返回结果(选择头像功能为例)

    在上面启动Activity和传值之后,怎样获取Acitvity的返回值。下面示例实现点击选择头像按钮,跳转到头像显示Activity,并将选择的图片的索引返回,在MainActivity中获取后设置头像。 效果 注: 实现 首先是主页面...

    android获取设备已启动服务

    而本文将介绍android设备中已启动的服务,并判断某一服务是启动 1.根据ACTIVITY_SERVICE获取系统服务 activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 2.获取系统中正在运行的服务 ...

    Activity生命周期演示

    日志追踪(完成以下六步、明白android的四种状态的生命周期和相互切换): 1、启动app、查看控制台输出,发现依次触发onCreate、onStart、onResume这三个方法 2、点击按钮(弹窗风格的Activity),控制台输出onPause...

    指尖疯Android4.4视频第13集:Activity

    从本集开始,我们将挥挥手告别之前的UI控件学习,进入一个全新... 如何启动Activity、2. Activity的生命周期 3. Activity的数据传递 4. Activity的数据返回 四个方面为大家带来activity全方位的介绍,敬请收看,谢谢!

    Android Activity启动模式之standard实例详解

    本文实例讲述了Android Activity启动模式之standard。分享给大家供大家参考,具体如下: Android的活动是通过任务Task来进行管理的,一个任务就是一组放在栈里的活动的集合,即所谓的返回栈(Back Stack)。栈具有...

    Android 启动模式详细介绍

     启动模式:LaunchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。   这里简单介绍一下任务栈...

    Android中activity的启动模式

    是活动默认的启动模式,Android是使用返回栈来管理活动,standard模式下,每启动一个新的活动,它就会在返回栈中入栈,并处于栈顶位置。系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个...

    android 面试

    android 面试 1. 请描述下Activity的生命周期。  答:onCreate()... onDestroy()Activity从栈中取出时调用,也可以说从第二个Activity返回第一个Activity时,会调用第二个Activity的onDestroy(),销毁Activity

    Android Activity的跳转与传值详解

    Android Activity的跳转与传值详解 Activity跳转与传值,主要是通过Intent...Activity跳转,无返回结果  这是最简单的Activity跳转方式。从一个Activity启动另一个Activity,直接startActivity(new Intent(当前Activi

    androidkit(android应用开发工具包)

    androidkit是一个android应用开发工具包,包含SQLiteOpenHelper的简单实现类、获取指定URL中返回的内容的String对象、View控件的截图、获取 本程序的图标、名字、版本、包名等信息、再按一次退出、抽象类,继承并...

    Android Activity启动模式之singleTask实例详解

    singleTask:当设置活动的启动模式为singleTask时,首先检查返回栈中是否存在当前活动,如果存在当前活动的实例,则直接使用当前实例,并把当前活动之上的所有活动pop出栈,即当前活动位于栈顶位置。 代码实例如下:...

    【android编程】第七讲-android Activity

    【android编程】第七讲-android Activity 文章目录【android编程】第七讲-android Activity1. 学习指导2. Activity生命周期3. 创建Activity4. 配置Activity5. 启动和关闭Activity6. Activity 传递数据7. Activity ...

Global site tag (gtag.js) - Google Analytics