Android之startActivityForResult(笔记)

来源:互联网 发布:淘宝店怎么上传标志 编辑:程序博客网 时间:2024/04/28 20:53

之前在做Face++人脸识别年龄的时候,里面用到了startActivityForResult,这是我第一次看到这东西,后来也同样的在iMooc上看到了这个的基础讲解,才知道这个东西是有返回结果的跳转。原来我们的startActivity( )是属于无返回结果的跳转。

我目前也只会这种基本的用法

FirstActivity:​

​Intent intent = new Intent(MainActivity.this , SecondActivity.class);startActivityForResult(intent , 1);         //1是requestCode

这里用到了startActivityForResult (Intent intent, int requestCode)

参考文档里写的是:

​public void startActivityForResult (Intent intent, int requestCode)

Same as calling startActivityForResult(Intent, int, Bundle) with no options.

Parameters

intent : The intent to start.

requestCode : If >= 0, this code will be returned in onActivityResult() when the activity exits.

所以第一个就是我们的Intent,第二个是我们的请求码,用于区分是哪个控件进行这个行为,所以多个控件做同个行为的话,就要写不同的requestCode。



然后要重写

protected void onActivityResult(int requestCode, int resultCode, Intent data) ​方法

同样的参考文档里这样写:​

Called when an activity you launched exits, giving you the requestCode you started it with, the resultCode it returned, and any additional data from it. The resultCode will be RESULT_CANCELED if the activity explicitly returned that, didn’t return any result, or crashed during its operation.

You will receive this call immediately before onResume() when your activity is re-starting.

Parameters

requestCode : The integer request code originally supplied to startActivityForResult(), allowing you to identify who this result came from.

resultCode : The integer result code returned by the child activity through its setResult().

data : An Intent, which can return result data to the caller (various data can be attached to Intent “extras”).

所以它应该是说这个方法开始起作用的时候,就是我们当前的这第一个Activity处于onResume()之前,也就是当我们一般新打开第二个Activity的时候,第一个Activity会处于onPause()状态,从第二个回到第一个的时候​,第一个Activity就会启用onResume()状态。

另外一个就是resultCode是我们的第二个Activity通过setResult()得来的。我觉得应该就这两点是我目前要注意的吧。​



SecondActivity:

private String context = "哈哈哈";​bt.setOnClickListener(new View.OnClickListener() {     @Override​public void onClick(View v) { Intent data = new Intent();  data.putExtra("context" , context);  setResult(2 , data);   //2就是resultCode finish();  }});​

回到FirstActivity,之前说要重写onActivity​Result():

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    if(requestCode == 1 && resultCode == 2)    {        String context = data.getStringExtra("context");        tv.setText(context);    }}

That is it.​

参考:慕课网:Android中攻城狮的第二门课

0 0
原创粉丝点击