zoukankan      html  css  js  c++  java
  • 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的一点总结 

  • 相关阅读:
    测试开发题目整理(二)
    测试开发题目整理(一)
    Python + request接口测试中Cookie和Session的获取和使用
    requests发送HTTPS请求(处理SSL证书验证)
    js ES5面向对象继承 模仿ES6
    如何使用canvas绘制椭圆,扩展非chrome浏览器中的ellipse方法
    javascript对象创建及继承
    观察者模式及事件与委托的区别-20171215内训会
    html5悬浮球效果
    文本框高度自适应不出滚动条
  • 原文地址:https://www.cnblogs.com/blacksonny/p/4582928.html
Copyright © 2011-2022 走看看