zoukankan      html  css  js  c++  java
  • Android之startActivityForResult

    作用:当aAty跳转之bAty时,需要bAty回传数据,使用startActivityForResult。

    相关的函数:

    aAty:--跳转至bAty(intent可以传递数据)

    void android.app.Activity.startActivityForResult(Intent intent, int requestCode)

    bAty:

    void android.app.Activity.setResult(int resultCode, Intent data)

    aAty:

    void android.app.Activity.startActivityForResult(Intent intent, int requestCode)

    代码:

    aAty:

    public class MainActivity extends Activity implements OnClickListener {
        private Button bt_jumpAnotherAty;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            bt_jumpAnotherAty = (Button) findViewById(R.id.bt_jumpAnotherAty);
            bt_jumpAnotherAty.setOnClickListener(this);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (resultCode) {
            case RESULT_OK:
                String result = data.getStringExtra("result");
                Log.d("h_bl", result);
                break;
    
            default:
                break;
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.bt_jumpAnotherAty:
                Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
                startActivityForResult(intent, 0);
                break;
    
            default:
                break;
            }
        }
    
    }

    bAty:

    public class AnotherActivity extends Activity implements OnClickListener {
        private Button bt_setResult;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_another);
            bt_setResult = (Button) findViewById(R.id.bt_setResult);
            bt_setResult.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.bt_setResult:
                // 数据是使用Intent返回
                Intent intent = new Intent();
                // 把返回数据存入Intent
                intent.putExtra("result", "My name is h_bolin");
                // 设置返回数据
                AnotherActivity.this.setResult(RESULT_OK, intent);
                // 结束该Aty,这点很重要。
                AnotherActivity.this.finish();
                break;
    
            default:
                break;
            }
        }
    
    }

    详解:bAty被销毁时 -- finish(),会返回数据。

    PS.

    1.一般不会在bAty的onCreate()方法写setResult()方法,需要在调用的时候,才会调用。

    2.按Back键,Android会自动调用Aty的finish()方法。

    3.可以重写onBackPressed()方法,对Back键的事件处理。

    String result = data.getStringExtra("reslt");

    4.取值时,要name要写对,不然会报以下错误:

    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.example.startactivityforresultdemo/com.example.startactivityforresultdemo.MainActivity}: java.lang.NullPointerException: println needs a message

    startActivityForResult() 中requestCode 和 resultCode 的作用:

    使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入一个请求码(第二个参数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。

    详见:

    http://blog.csdn.net/donglynn/article/details/22693835

  • 相关阅读:
    JavaWeb学习总结(五十)——文件上传和下载
    JavaWeb学习总结(四十九)——简单模拟Sping MVC
    JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
    javaweb学习总结(四十七)——监听器(Listener)在开发中的应用
    javaweb学习总结(四十六)——Filter(过滤器)常见应用
    javaweb学习总结(四十五)——监听器(Listener)学习二
    javaweb学习总结(四十四)——监听器(Listener)学习
    javaweb学习总结(四十三)——Filter高级开发
    javaweb学习总结(四十二)——Filter(过滤器)学习
    javaweb学习总结(四十一)——Apache的DBUtils框架学习
  • 原文地址:https://www.cnblogs.com/H-BolinBlog/p/5267746.html
Copyright © 2011-2022 走看看