您的位置:首页 > 其它

startActivity与startActivityForResult的使用小结

2015-06-17 12:44 393 查看

1、在一个Activity中想要启动进入另一个Activity时,通常我们使用startActivity这个方法来实现,代码如下:

其中MainActivity为源activity,ActivityLifeCycleActivity为目标activity,也就是要进入的那个,也可通过intent传递一些必要的参数。

Intent intent = new Intent(MainActivity.this, ActivityLifeCycleActivity.class);
startActivity(intent);

 

2、当进入第二个activity后,想要在关闭activity时传递一些参数给它的上一级activity,即可使用startActivityForResult这个方法来实现,代码如下:

方法中的intent和startActivity的intent没有区别,需要传递一个requestCode, 即1这个值为本次请求的标识,在第二个activity返回后用的到

Intent intent = new Intent(MainActivity.this, ActivityForResultActivity.class);
startActivityForResult(intent, 1);

在ActivityForResultActivity中返回数据,通过setResult方法实现,第一个参数为resultCode,告诉第一个activity返回的标识是RESULT_OK, 第二个参数通过intent传递数据;调用finish关闭当前activity,返回数据,即执行ActivityForResultActivity.this.finish() 完成activity的关闭

 

 

public class ActivityForResultActivity extends ActionBarActivity {
private Button mBtnReturnMain;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_for_result);

mBtnReturnMain = (Button) findViewById(R.id.btn_return_main); mBtnReturnMain.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("result", "我是来自ForResult的Activity的消息"); setResult(RESULT_OK, intent); ActivityForResultActivity.this.finish(); } }); } }

 

在源activity也就是MainActivity中实现方法onActivityResult,判断resultCode的值和上面setResult的第一个参数进行对应,分支requestCode与startActivityForResult的第二个参数对应,这样可以通过参数值在做多个分支的跳转与数据接收

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){

switch (requestCode){
case 1:
String str = data.getStringExtra("result");
if(TextUtils.isEmpty(str)){
str = "ForResultActivity没有返回消息";
}

Toast.makeText(MainActivity.this,str, Toast.LENGTH_SHORT).show();

break;

default:
break;
}

}
}

 

 

以上就是对startActivity和startActivityForResult的一点总结 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: