startActivity与startActivityForResult的使用小结

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的一点总结 

posted @ 2015-06-17 12:44  blacksonny  阅读(815)  评论(0编辑  收藏  举报