第一个activity代码:
第二个activity代码:
记住,要在androidmanifest.xml文件中声明两个activity哦,代码如下:
-------------------------------------------------------------------------
让我们来总结下,关于activity之间相互跳转的问题:
activity与activity之间的跳转是通过意图Intent进行的。
intent有一个setClass方法,Intent setClass(Context packageContext, Class<?> cls)第一个参数为当前context,第二个参数为要跳转到的activity。
我们跳转时,可以通过startActivity()方法进行跳转,这样的跳转是没有返回值的。如果你想要后边的activity返回给当前activity一些数据的话,那么只能通过startActivityForResult()方法。void startActivityForResult(Intent intent, int requestCode),第一个参数为intent,第二个参数为一个请求码,这个数字是你自己设定的。
除此之外,我们要想获得后边的activity返回给我们的数据,我们还要在当前activity中实现,onActivityResult(int requestCode, int resultCode, Intent data) 方法,其中requestCode与startActivityForResult方法中的requestCode保持一致。(requestCode实际上很有用,如果我们当前的activity可以跳转到很多activity,并且每一个activity都会返回给你数据,那么我们是如何判断到底返回的数据是哪个请求的呢,这里就是用的requestCode)。
在后边的activity中(被我们通过startActivityForResult方法启用的activity),我们通过this.setResult()方法来返回数据,setResult(int resultCode, Intent data)第一个参数为标识位,就是我们前一个activity实现onActivityResult方法时的resultCode,我们可以通过该值知道数据处理是否成功。
可能取值为:RESULT_CANCELED RESULT_OK RESULT_FIRST_USER。
在setResult()之后调用finish方法是为了销毁当前activity,让前一个activity获得显示机会。
此外,还可以通过 intent.setClassName(String packageName, String className) 方法设置跳转目标,其中packageName是当前activity的包名称,className是目标activity的全路径名,这里一定要注意,是全路径名称!
当然还有Intent 的setClassName(Context packageContext, String className)也是同样的功能,这里贴出他们的api部分。