• Activity之间的信息传递方式


    在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。

    直接进入实例

    Intent newIntent = new Intent(MainActivity.this,LogInActivity.class);
    // 传递参数
    newIntent.putExtra("这是传递给子Activity中的信息", "MainActivity"); 
    // 开始一个新的 Activity等候返回结果
    startActivityForResult(newIntent,999);

    在主Activity中,应该重写onActivityResult方法,该方法是用来接收子Activity中的返回值,及处理结果

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        switch (requestCode) {
           //这个requestCode返回码,是子Activity中定义的不同处理结果的标识,比如,这里用switch 处理不同结果 
            case 999:
                //取得来自SecondActivity页面的数据,并显示到画面 
                  Bundle bundle = intent.getExtras();
                 //获取Bundle中的数据,注意类型和key 
                 String username = bundle.getString("username");
         Toast.makeText(this, "成功返回了", Toast.LENGTH_LONG).show();
    }

    假设子Activity中有一个定义submit的方法,用来监听按钮触发返回的事件,其中其中的setResult()方法相当于启动了Activity,不要忘记finish(),否则这个界面切不会去

    public void submit(View v) {
            int sw = v.getId();
            switch (sw) {
            case R.id.login:
                String username = usernametext.getText().toString();
                  Bundle bd = new Bundle();
                  bd.putString("username", username); 
                  Intent it = new Intent();//注意,这里是空的,有Activity的话,会覆盖前面主Activity的回调监听
                  it.putExtras(bd);
                  this.setResult(999, it);;
                  finish();
                break;
            default:
                Toast.makeText(this, R.string.errordo, Toast.LENGTH_LONG).show();
                break;
            }
     
        }

    以上是同一个程序内Activity中通信方式,如果不是在同一个程序的话,用uri来做,有需要的话,我再完善

  • 相关阅读:
    PHP类(一)-类的实例化
    PHP函数(六)-匿名函数(闭包函数)
    PHP函数(五)-回调函数
    javaIO-字符流
    split 命令
    hadoop的增删改查
    Hadoop的MR
    java的序列化和反序列化
    字符串格式化-String类format方法
    Avro从入门到入土
  • 原文地址:https://www.cnblogs.com/haoxiqiang/p/2889463.html
Copyright © 2020-2023  润新知