zoukankan      html  css  js  c++  java
  • activity间的传参

    Intent有两个作用:激活组件和附带数据

    激活另一个activity的方法
    显示意图:
      1.  Intent intent = new Intent();
           
    intent.setClass(this, OtherActivity.class);//设置要激活的组件
           startActivity(intent);

       2. 
    Intent intent = new Intent();
          intent.setClassName(this, "com.example.activity.OtherActivity");//通过反射机制直接得到,包+activity.
           startActivity(intent);
     
       3.
     Intent intent = new Intent();
           
    intent.setComponent(new ComponentName(this, OtherActivity.class));  //设置组件
           
    startActivity(intent);

       4.
    Intent intent = new Intent(this,OtherActivity.class);
           startActivity(intent);

         5.   /**
        * 跨应用激活activity,其他应用的包,包加应用的全称,需要其他应用给出权限
    * intent.setClassName("com.example.activity", "com.example.activity.OtherActivity");
     */

    如果不是action.Main,则需要主动申明Android:exported="true",允许外部访问


    附带数据
       在mainActivity中 
     1.      Intent intent = new Intent();
          
     intent.setClass(this, OtherActivity.class);

           intent.putExtra("name", "姓名");
           intent.putExtra("age",5);      
           startActivity(intent);
        在otherActivity中 提取数据
           
    Intent intent = getIntent();
           String name = intent.getStringExtra("name");
           int age = intent.getIntExtra("age", 0);//0是缺省值
         
       2.bundle对象存放数据
        
      Intent intent = new Intent();
          
    intent.setClass(this, OtherActivity.class);
    // 批量添加
    Bundle budle = new Bundle();
    budle.putString("name", "姓名");
    budle.putInt("age", 5);
    intent.putExtras(budle);
            startActivity(intent);
        otherActivity不用改,也可以采用另一种做法
             
     Bundle bundle = intent.getExtras();
    String name=bundle.getString("name");
    int age =bundle.getInt("age");


    需要otherActivity返回结果给Mainactivity
         这种需求需要我们改变打开的方式

         把
    startActivity(intent)改成
             startActivityForResult(intent, 200);//200是请求码,用于区分哪部分调用
       再重写
    onActivityResult方法 
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    String result = data.getStringExtra("result");
    Toast.makeText(getApplicationContext(),result, 1).show();
    }
     

      我们可以在关闭otherActivity时返回结果,也可以定义一个按钮关闭otherActivity返回参数
               
    public void closeActiviity(){
    Intent data = new Intent();
    data.putExtra("result", "xxxdja");
    setResult(30, data);//设置返回数据,30是返回码
    this.finish();//关闭当前activity
    }
     
  • 相关阅读:
    python学习之ajax和可视化管理工具
    操作系统-保护模式中的特权级下
    redis 分布式锁的 5个坑,真是又大又深
    数据库之数据表控制语句
    【NoSQL】Consul中服务注册的两种方式
    netstat命令使用方法以及详解
    Dockerfile与Dockerfile实战
    Spring boot+redis实现消息发布与订阅
    怎么寻回位置不可用移动硬盘的数据
    python字符前面u,r,f等含义
  • 原文地址:https://www.cnblogs.com/zyandroid/p/3164979.html
Copyright © 2011-2022 走看看