Activity带回调的启动方式

来源:互联网 发布:手机qq清空缓存数据 编辑:程序博客网 时间:2024/06/05 07:36

如果ActivityA需要打开一个新的ActivutiyB 单方面的传递数据,可以开启一个新的意图 new Intent(); 用putExtra();等方法把要传递的数据封装起来,  利用startActivaty();方法 去开启一个B, 在B中通过getIntent();方法 来获取一个Intent 对象

然后通过getXxxx()方法 根据Key 把你传递的数据获取出来

ActvityA 中的代码  :

Intent intent = new Intent(this, Activity01.class);
intent.putExtra("SS",num);
startActivity(intent);


ActivityB中的代码:

Intent intent = getIntent();  //getIntet();
String num = intent.getStringExtra("SS");

如果需要在ActivityB结束的时候带返回值传递到ActivityA 那么就需要在A中调用 startActivityForResult();方法了

这个方法中有两个参数requestCode 代表请求码 是每个请求页面的标识  另一个是Intent

第二步 在ActivityA 中重写onActivityResult方法 用于接收 B中返回的数据 这个方法是回调方法 自动调用

第三步 在ActivityB中 调用setResult方法 将所要传递的数据返回

ActvityA 中的代码  :

int requestCode = 1;
Intent intent2 = new Intent(this,Activity01.class);
intent2.putExtra("SS", num);
startActivityForResult(intent2, requestCode);

重写onActivityResult:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1&&resultCode == 2) {
//Intent intent = getIntent();   // data 本身就是一个 Inten  所以不需要再new了 直接调用里面的方法就行了
String s = data.getStringExtra("AA");

}

ActicityB中代码:

int resultCode = 2;
String num1 = ed1.getText().toString();
Intent data = new Intent(); //同调用者一样 需要一个意图 把数据封装起来
data.putExtra("AA", num1);
setResult(resultCode, data);
finish();



0 0