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

时间: 2024-08-24 10:52:00

startActivity与startActivityForResult的使用小结的相关文章

Activity间的跳转,startActivity与startActivityForResult

JreduCh04 2016-07-30跳转 (由一个画面跳转到另一个画面)两种方法:Intent中 startActivity.startActivityForResult.后者可设置requestCode(申请码)用于获得返回值,即由一个画面传数据到多个画面(相同的数据),完成不同的功能,此时的requestCode的可通过判断来获得返回值.例:startActivity 在第一个画面中设置一个按钮,按下按钮跳转到第二个画面.lay_out中,相对布局中设置一个Button,id为bt1;

Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)

            如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:[email protected]       [Android四大组件学习系列Activity篇]        1.Android四大组件之——Activity(一)定义.状态和后退栈(图文详解) 2.Android四大组件之——Activity的生命周期(图文详解) 3.Android四大组件之——Activity的开启StartActivit

StartActivity 和 StartActivityForResult

startActivity 和 startActivityForResult都用来打开另外一个Activity,但是后者添加了更多功能:比如在MainActivity使用startActivityForResult打开了OtherActivity,那么调用OtherActivity的finish() 方法后,会自动调用MainActivity的 onActivityResult() 方法(需要从写),这样就可以做进一步的处理.当然不止在打开activity的时候可以通过intent传递数据,在关

startActivity、 startActivityForResult 、广播的使用

前言 近期忙着跟项目.好久没有写文字了.今天一个群里面的童鞋问到一个关于不同界面间传值的问题,借这个背景,写一段关于" startActivity. startActivityForResult .广播的使用"的文字,希望能对照我还新的新手有所帮助 ①. startActivity. startActivityForResult:  Intent intent; @Override  public void onClick(View v) {   int tag = v.getId()

Android之startActivity、startActivityForResult和setResult详解

[PS:还是以GOOGLE原生的BluetoothChat为例] 1. startActivity与startActivityForResult的区别 startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( ). startActivityForResult( ) 可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity, 而当这个Text2Activity调用了fini

Andorid学习笔记(ADT)-startActivity和startActivityForResult的用法

startActivity的用法 startActivity同时用在Button按钮的onClickListener中 在第一个activity(A)文件中: //写在onClickListener方法中 public void onClick(View v){ Intent intent = new Intent(); //使用Intent类的构造方法创建一个intent对象 intent.setClass(A.this,B.class);//设置intent的意图,表示从A跳转到B star

移动APP设备锁功能开发中的问题

最近在app端开发增加一个功能:设备锁  就是进入app时验证指纹或者锁屏密码. 首先看下翻译的官网文档 https://www.cnblogs.com/peterYong/p/12434683.html Android端 指纹验证 系统默认每段时间内验证指纹次数为5次,如果5次后还没验证成功,则关闭验证,并且30秒内不允许再次验证,即使你调api也没用. 参考:FingerprintManager 锁屏密码验证 参考:[确认凭证] Android 6.0 ConfirmCredential h

android开发:startActivityForResult和startActivity比较

以A_Activity跳转到B_Activity为例. 一.startActivity A调用startActivity 跳转到B,再想从B跳转到A,那么B需要调用startActivity或startActivityForResult方法. 二.startActivityForResult A调用startActivityForResult 跳转到B,当B finish掉后,会自动跳转到A,并且回传数据给A. 增加的工作有: 1.B调用setResut(int resultCode, Inte

Android -- startActivityForResult和setResult

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