android学习笔记(六)

一、从Activity返回数据

1.在点击按钮时要发送请求码

startActivityForResult(intent, 0);

2.接收数据完成onActivityResult方法

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    if(data==null)
    return;
    Bundle bundle=data.getExtras();
    String phonenumer=(String) bundle.getString("phonenumer")
    edt.setText(phonenumer);
    }

3.传递值

//传递值的时候设置结果码

Intent intent=new Intent();
intent.putExtra("phonenumber", phonenumber.getText().toString());
setResult(0,intent);
finish();


二、请求码和结果码    

新的Activity与主Activity不在同一个线程中,当新的Activity关闭时,会触发主Activity的

onActivityResult事件。

startActivityForResult(Intent intent, int requestCode): 主Activity带着请求码跳到一个新的Activity界面。

 onActivityResult(int requestCode, int resultCode, Intent data)
  - requestCode: 通过这个参数可以判断是从哪个界面回来的
  - resultCode、data:被关闭的那个界面传递回来的数据

当我们关闭新的Activity时,会触发主Acvitity的onActivityResult方法,那么由于之前主Activity发送了一个请求码,这时候就可以根据请求码判断是从哪个 界面回来的了。

 * setResult(int resultCode):设置传递到上一个界面的数据
 * setResult(int resultCode, Intent data):设置传递到上一个界面的数据

从新Activity回到主Activity时也可以设置一些结果码信息。

startActivityForResult与startActivity的不同之处在于:
1、startActivity( ) 
仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。
2、startActivityForResult( ) 
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个T2Activity,而当这个T2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。 

Activity.finish()
Call this when your activity is done and should be closed. 
在你的activity动作完成的时候,或者Activity需要关闭的时候,调用此方法。
当你调用此方法的时候,系统只是将最上面的Activity移出了栈,并没有及时的调用onDestory()方法,其占用的资源也没有被及时释放。因为移出了栈,所以当你点击手机上面的“back”按键的时候,也不会再找到这个Activity。
Activity.onDestory()
the system is temporarily destroying this instance of the activity to save space.
系统销毁了这个Activity的实例在内存中占据的空间。
在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间等就被回收了。
当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。
System.exit(0)
这玩意是退出整个应用程序的,是针对整个Application的。将整个进程直接KO掉。


你可能感兴趣的:(Activity返回数据)