首先说下这个问题的情景:
当前的软件有一个主Activity A1 并且从A1可以跳转到A2 A3两个界面 而A2 A3也可以回退到A1 同时在这之间 需要传递一些数据
第一种做法是:
Intent intent=new Intent(A1.this,A2.class);
//给intent通过setExtra等方法设置要传递的信息
startActivity(intent);
在A2中可以通过getIntent()方法将信息取出来
同理,A2回退到A1 也一样
也就是A1和A2之间互相startActivity
但是在学习的过程中 发现Activity的跳转还存在另外一个方法startActivityForResult
以A1跳转A2为说明
启动方式没有改变 只是将startActivity改为startActivityForResult
而此时从A2回到A1 就不需要再次调用startActivity了,而是采用
Intent intent=new Intent();
//同样在intent中放置需要传递的信息
setResult(RESULT_CODE, intent); //RESULT_CODE是一个int值 用于父界面区分
finish(); //关闭自己 一定要执行这句话
此时由于子窗口关闭 父窗口就被显示出来,为了取得需要传递的那些值,还需要在父窗口中复写一个重要方法onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
}
其中就可以根据resultCode来进行不同的操作了
最后 两者之间又有什么区别呢
default的startActivity的LaunchMode如果在多次反复跳转的情况下 产生多个A1 A2的实例(LaunchMode包括standard,SingleTop,SingleTask,SingleInstance4种)这可能并不是我们期望的
当然还有一个问题 如果采用互相跳转 同时又采用SingleTask的mode 两者之间是不是就相等了。。至少从我的理解来看 是相同的 但是在这样的情况下 觉得startActivityForResult会更方便一些
分享到:
相关推荐
一个startActivityForResult的简单demo
关于startActivity被大家忽略的 Fragment中的startActivityForResult方法
android Inter startActivityForResult startActivity
singleTask和startActivityForResult的纠葛(activity的重建/onActivityResult回调为0) 问题验证: 1.startActivityForResult打开singleTask模式的活动,singTask失效。(见Action2) 2.singleTask模式的活动...
Activity返回参数和传值区别:传参调用startActivity(intent)执行跳转,返回参数用startActivityForResult(intent, 1)方法,还需从写onActivityResult()方法,它是负责初始化回传参数的方法。
【实践目的】 掌握Activity的创建过程和配置。理解Activity的生命周期以及各个生命周期方法的使用。掌握页面切换的两种方法。...3.创建简单注册页面,分别通过StartActivity和StartActivityForResult实现页面切换。
startActivity(intent); Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_SETTINGS);//管理应用程序界面 context.startActivity(intent); 或者用以下方法(3.0以前的版本可以用此方法) ...
可能有人说: 那我在Activity2 再使用 startActivity() 不就可以了 是的 但是 startActivityForResult() 能够直接完成这项工作[示例]Activity1: 有2个EditText 用于接收用户输入的2个字符串 要求把这2个字符串连接...
android startActivityForResult实现Acitvity的回调 最常见的登录运用.
startActivityForResult 使用实例.
有关startActivityForResult用法实例,比较清晰简单
startActivityForResult用于两个activity之间的数据传递,Activity1传值给Activity2,Activity2再返回值给Activity1。 第一步:Activity1中:startActivityForResult(Intent intent, Int requestCode) Intent ...
很多时间我们需要的不仅只是startActivity或是finish,而是在finish的时候,把在第二个界面的值回传给第一个界面。这个程序就是用来解决这样的问题的。
这个实验描述了Activity之间的另外一种切换方式,通常Activity的切换方式是Activity1通过startActivity切换到Activity2, Activity2再通过startActivity切换到其他的Activity,但是有的时候我们需要启动一个新的...
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import ...
android框架与应用开发介绍 通过view管理UI 每一个有用户界面的应用至少包含一个activity 一个应用可以有多个activity,其中一个作为main ...Activity通过startActivity或startActivityForResult启动另外的activity
Then you have to startActivityForResult if you want to know if icon pack was correctly applied, or startActivity if not. If package name is not valid nor apex based, or if user is not allowed to set ...
StartActivityForResult永恒基金会实习项目这是“开始活动结果”的演示
startActivity(Intent.createChooser(it, "Choose Email Client")); //搜索应用 Uri uri = Uri.parse("market://search?q=pname:pkg_name"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it)...
主要给大家介绍了Android中startActivityForResult()的用法,文中给出了详细的介绍与示例代码,相信对大家的理解和学习具有一定参考借鉴价值,有需要的朋友们下面来一起看看吧。