zoukankan      html  css  js  c++  java
  • intent--Activity之间数据传递之Intent数据传递

    intent传值:

    4,intent传集合

    3,intent传对象,

     2,传递后有返回值的情况:
    当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,
    也可以使用 startActivityForResult (Intent intent, int requestCode);

    1,传递后无返回值的情况:从当前Activity传递到目标Activity后有无返回值:

     ===========

    4,intent传集合

    但是有的时候又要传递多个实体类。就要把这些实体类的对象放在一个List中传递。
    Intent.putExtras(key, value)几乎可以包括各种类型的值,但是却没有类似List<Object>之类的传递参数。
    今天用到的时候试了下,
    发现可以把list强转成Serializable类型,然后通过putExtras(key, (Serializable)list)方法传递过去。
    接受的时候用(List<YourObject>) getIntent().getSerializable(key)就可以接受到List<YourObject>数据了
    同样这个实体类必须要实现Serializable接口,切记切记,不然会报错。

     3,intent传对象;

    Intent不能直接传递t对象,需要通过bundle来传递
    向intent中添加数据:
    Intent intent_share = new Intent(MainActivity.this,ShareActivity.class);
    Bundle bundle = new Bundle();
    bundle.putSerializable("article", article);
    intent_share.putExtras(bundle);
    startActivity(intent_share);

    接收数据:
    Bundle bundle = getIntent().getExtras();
    Article article = (Article) bundle.get("article");
    其中Article是一个实体类,这个类必须序列化才行(实现Serializable接口)。

     2,传递后有返回值的情况:
    当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,
    也可以使用 startActivityForResult (Intent intent, int requestCode);

    在起始Activity中,发送数据:
    Intent intent = new Intent();
    intent.setClass(ThisActivity.this,TargetActivity.class);
    intent.putExtra("username",username);//也可以绑定数组
    intent.putExtra("userpass",userpass);
    startActivityForResult(intent,1);

    //需要重写onActivityResult方法
    protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode,resultCode,intent);
    //判断结果码是否与回传的结果码相同
    if(resultCode == 1){
    String name = intent.getStringExtra("name");
    String pass = intent.getStringExtra("pass);
    //对数据进行操作
    ......
    }

    在目标Activity中,接收数据:
    Intent intent = getIntent();
    String name = intent.getStringExtra("username");
    String pass = intent.getStringExtra("userpass);
    //从EditText中获取新的数据给name和pass
    name = editText1.getText().toString();
    pass = editText2.getText().toString()
    //数据发生改变,需要把改变后的值传递回原来的Activity
    intent.putExtra("name",name);
    intent.putExtra("pass",pass);
    //setResult(int resultCode,Intent intent)方法
    setResult(1,intent);
    //销毁此Activity,摧毁此Activity后将自动回到上一个Activity
    finish();

    1.传递后无返回值的情况:从当前Activity传递到目标Activity后有无返回值 

    在起始Activity中,发送数据
    Intent intent = new Intent();
    intent.setClass(ThisActivity.this,TargetActivity.class);
    intent.putExtra("username",username);//也可以绑定数组
    intent.putExtra("userpass",userpass);
    startActivity(intent);

    在目标Activity中,接收数据:
    //获得意图
    Intent intent = getIntent();
    String name = intent.getStringExtra("username");
    String pass = intent.getStringExtra("userpass);

    也可以适用Bundle(捆)--在起始Activity中,发送数据:
    Intent intent = new Intent();
    intent.setClass(ThisActivity.this,TargetActivity.class);
    //一次绑定多个数据
    Bundle bundle = new Bundle();
    bundle.putString("username",username);
    bundle.putString("userpass",userpass);
    intent.putExtras(bundle);
    startActivity(intent);

    在目标Activity中,接收数据:
    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    String name = bundle.getString("username");
    String pass = bundle.getString("userpass");

  • 相关阅读:
    000_linux之Ubuntu安装
    001_linux基础命令
    018_linux驱动之_阻塞和非阻塞
    019_linux驱动之_定时器的引入
    017_linux驱动之_信号量
    016_linux驱动之_原子操作
    python logging模块整理
    python sys与shutil模块
    python configparser模块
    python os模块
  • 原文地址:https://www.cnblogs.com/awkflf11/p/4613609.html
Copyright © 2011-2022 走看看