美文网首页
Android Activity 之间的数据传递方法有哪些

Android Activity 之间的数据传递方法有哪些

作者: 像程序那样去思考 | 来源:发表于2023-03-06 15:47 被阅读0次

    在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,因此,小编在这里分享六种Android Activity 之间的数据传递方法?

    使用静态变量传递数据

    第一个Activity

    Intent intent = new Intent(MainActivity.this,TwoActivity.class);
    
      TwoActivity.name="牛逼";
    
      TwoActivity.str="你说";
    
      startActivity(intent);
    

    第二个Activity

    //静态变量
    
    protected static String name;
    
    protected static String str;
    
    tv.setText(str+name);
    

    SharedPreferences传递数据

    第一个Activity中

    SharedPreferences sp = this.getSharedPreferences("info", 1);
     //获取sp编辑器 Editor edit = sp.edit();
     edit.putString("data", str); edit.commit();
     //创建意图对象
     Intent intent = new Intent(MainActivity.this,TwoActivity.class);
     //激活意图
     startActivity(intent);
    

    第二个Activity中

    SharedPreferences sp = this.getSharedPreferences("info", 1);
     //设置数据
     tv.setText(sp.getString("data", ""));
    使用Intention的Bundle传递
    第一个Activity中
    //创建意图对象
     Intent intent = new Intent(MainActivity.this,TwoActivity.class);
     //用数据捆传递数据
     Bundle bundle = new Bundle();
     bundle.putString("data", str);
     //把数据捆设置改意图
     intent.putExtra("bun", bundle);
     //激活意图
     startActivity(intent);
    

    第二个Activity

    //获取
    Bundle Intent intent = getIntent();
     Bundle bundle = intent.getBundleExtra("bun");
     String str = bundle.getString("data");
     tv.setText(str);
    

    使用Inten的putExtra传递

    第一个Activity中

    //创建意图对象
     Intent intent = new Intent(this,TwoActivity.class);
     //设置传递键值对
     intent.putExtra("data",str);
     //激活意图
     startActivity(intent);
    

    第二个Activity中

    // 获取意图对象
     Intent intent = getIntent();
     //获取传递的值
     String str = intent.getStringExtra("data");
     //设置值
     tv.setText(str);
    

    使用Activity销毁时传递数据

    第一个Activity中

    Intent intent = new Intent(MainActivity.this,TwoActivity.class);
      //用一种特殊方式开启
    Activity startActivityForResult(intent, 11);
    //设置数据
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     String str = data.getStringExtra("data");
     tvOne.setText(str);
    }
    

    第二个activity中

    //设置返回的数据
     Intent intent = new Intent();
     intent.putExtra("data", edtOne.getText().toString().trim());
     setResult(3, intent);
     //关闭当前
    activity finish();
    

    使用序列化对象Seriazable

    工具类

    import java.io.Serializable;
    class DataBean implements Serializable {
     private String name;
     private String sex;
     public String getName() {
     return name;
     }
     public void setName(String name) {
     this.name = name;
     }
     public String getSex() {
     return sex;
     }
     public void setSex(String sex) {
     this.sex = sex;
     }
    }
    

    第一个Activity

    //创建意图
     Intent intent = new Intent(MainActivity.this,TwoActivity.class);
     DataBean bean = new DataBean();
     //通过set方法把数据保存到DataBean对象中
     bean.setName("啦啦");
     bean.setSex("男");
     intent.putExtra("key", bean);
     startActivity(intent);
    

    第二个Activity

    Intent intent = getIntent();
     //反序列化数据对象
     Serializable se = intent.getSerializableExtra("key");
     if(se instanceof DataBean){
      //获取到携带数据的DataBean对象db
      DataBean db = (DataBean) se;
      tv.setText(db.getName()+"==="+db.getSex());
    

    以上就是Android Activity 之间数据传递的六种方法。关注小编,不定期分享Android相关资料。

    相关文章

      网友评论

          本文标题:Android Activity 之间的数据传递方法有哪些

          本文链接:https://www.haomeiwen.com/subject/xipmldtx.html