Android之四大组件之一-Activity(二)

来源:互联网 发布:python 寻找相似图片 编辑:程序博客网 时间:2024/04/28 19:15

这里简介一下Activity启动其它的Activity的方法
(1)通过startActivity(Intent intent)启动Activity。
    传递参数的方式:putExtra("key",values);
     或者putExtras(Bundle);
    获取参数的方式:getXxxExtra(key)
或者getExtras().getXxx()
注意:Xxx是数据类型

(2)通过startActivityForResult(Intent intent,int requestCode):
    ( 以指定的请求码启动Activity,而且程序将会等待新启动Activity的结果。
     一般情况下,我们只需要保证requestCode>-1即可,
     这样它都能收到result。但是如果在Aactivity中,
     能够跳转到多个activiity,并且要接受到这多个
     activity中的信息的时候,我们就要注意了,这时候,
     requestCode就起大作用了,当你startActiviityForResult()的时候, 
     给每一个不同的activity一个独立的requestcode,
     那么在你接受到result的时候就可以通过这个参数来判断,
     结果是那个acitivity返回来的了)
     
     启动的Activity重写onActivityResult()
     被启动的Activity返回数据:setResult(int,Intent)
     
那么setResult()应该在什么时候调用呢?从源码可以看出,
Activity返回result是在被finish的时候,也就是说调用
setResult()方法必须在finish()之前。所以在
onPause、onStop、onDestroy方法中调用setResult()也
有可能不会返回成功,因为这些方法调用不一定是在
finish之前的,当然在onCreate()就调用setResult肯定
是在finish之前的,但是又不满足业务需要。
实际使用场景有两个:
(1)按BACK键从一个Activity退出来的,一按BACK,
android就会自动调用Activity的finish()方法,
方法:重写onBackPressed()方法,捕获BACK事件,
捕获到之后先setResult。代码:
@Override
 public void onBackPressed()
 {
        Log.i(TAG, "onBackPressed");
        setResult(Const.LIVE_OK);
super.onBackPressed();
 }
(2)按点击事件中显式的调用finish()
intent.putExtra("result",et.getText().toString());
setResult(RESULT_OK, intent);
finish();

0 0
原创粉丝点击