Android开发两个activity之间传值示例详解

作者:AaVictory. 时间:2023-11-27 20:00:45 

使用Inten的putExtra传递

  • 第一个Activity中

//创建意图对象
Intent intent = new Intent(this,MainActivity2.class);
//设置传递键值对
intent.putExtra("name","花花");
//激活意图
startActivity(intent);
  • 第二个Activity中

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

使用Intention的Bundle传递

  • 第一个Activity中

Intent intent=new Intent(MainActivity.this,MainActivity2.class);
               Bundle bundle=new Bundle();
               bundle.putInt("id",2);
               bundle.putString("name",ss);
               intent.putExtra("bundle",bundle);
               startActivity(intent);
  • 第二个Activity中

Intent intent=getIntent();
       Bundle bundle=intent.getBundleExtra("bundle");
       final int id = bundle.getInt("id");
       final String name = bundle.getString("name");
       tv.setText(id);
       tv2.setText(name);

使用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();

SharedPreferences传递数据

  • 第一个Activity中

SharedPreferences sp=getSharedPreferences("com.example.data4",0);
               final SharedPreferences.Editor edit = sp.edit();
               edit.putString("name",ss);
               edit.putString("id","8");
               edit.apply();
               Intent intent=new Intent(MainActivity.this,MainActivity2.class);
               startActivity(intent);
  • 第二个Activity中

SharedPreferences sp=getSharedPreferences("com.example.data4",0);
       sp.getString("name","");
       tv1.setText(sp.getString("id",""));
       tv2.setText(sp.getString("name",""));

使用序列化对象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());
}

使用静态变量传递数据

  • 第一个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);

handler

  • 第一个Activity中

//点击跳转第二个页面
bt1.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               Intent intent=new Intent(MainActivity.this,MainActivity2.class);
               startActivity(intent);
           }
       });

//创建一个handler,处理信息
@SuppressLint("HandlerLeak")
   public static Handler mhandler=new Handler(){
       @Override
       public void handleMessage(@NonNull Message msg) {
           super.handleMessage(msg);
           switch (msg.what){
               case 1:
                   Log.e("ddddddd","Dddddddd");
                   break;
           }
       }
   };
  • 第二个Activity中

//点击按钮,返回第一个activity
btt.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               handler=MainActivity.mhandler;
               Message message=new Message();
               message.what=1;
               handler.sendMessage(message);
           }
       });
//点击按钮,10秒后 ,返回第一个activity
btt.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
           //开一个子线程
               new Thread(new Runnable() {
                   @Override
                   public void run() {
                       try {
                       //10秒之后发送
                           Thread.sleep(10000);
                           handler=MainActivity.mhandler;
                           Message message=new Message();
                           message.what=1;
                           handler.sendMessage(message);
                       } catch (InterruptedException e) {
                           e.printStackTrace();
                       }
                   }
               }).start();
           }
       });
//点击按钮,每10秒 ,返回第一个activity一次(循环一次),一共返回10次
btt.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               new Thread(new Runnable() {
                   @Override
                   public void run() {
                       int i=0;
                       do {
                           try {
                               Thread.sleep(10000);
                               handler=MainActivity.mhandler;
                               Message message=new Message();
                               message.what=1;
                               handler.sendMessage(message);
                               i++;
                           } catch (InterruptedException e) {
                               e.printStackTrace();
                           }
                       }while (i<10);
                   }
               }).start();
           }
       });

来源:https://blog.csdn.net/afufufufu/article/details/118292655

标签:Android,activity,传值
0
投稿

猜你喜欢

  • PageHelper在springboot+mybatis框架中的使用步骤及原理解析

    2023-07-28 21:40:09
  • C#使用集合实现二叉查找树

    2023-06-01 06:17:21
  • springboot+jwt+微信小程序授权登录获取token的方法实例

    2022-07-11 17:53:57
  • Java时间复杂度、空间复杂度的深入详解

    2023-10-22 01:22:40
  • Android中双击返回键退出应用实例代码

    2022-02-20 00:28:44
  • Java 反射机制详解及实例代码

    2023-07-13 15:22:29
  • SrpingDruid数据源加密数据库密码的示例代码

    2021-06-21 03:26:26
  • Mybatis初始化知识小结

    2023-11-01 13:59:27
  • c# 引用Nlog插件的步骤

    2021-08-10 01:03:43
  • java 集合工具类Collections及Comparable和Comparator排序详解

    2023-04-29 03:42:06
  • 详解SpringBoot启动代码和自动装配源码分析

    2021-10-18 08:49:21
  • java实例方法被覆盖,静态方法被隐藏Explain(详解)

    2022-07-20 08:05:03
  • C#调用Win32的API函数--User32.dll

    2022-04-13 16:43:24
  • android开发权限询问的示例代码

    2021-07-29 00:16:26
  • 关于Spring源码是如何解决Bean的循环依赖

    2023-09-16 14:15:17
  • SpringBoot一个非常蛋疼的无法启动的问题解决

    2023-12-12 15:24:36
  • C# InitializeComponent()方法案例详解

    2022-06-12 03:07:06
  • Java string类型转换成map代码实例

    2021-06-07 12:19:29
  • java中Vector类的常用方法详解

    2023-11-26 10:29:07
  • 详解java中的阻塞队列

    2021-11-26 12:24:44
  • asp之家 软件编程 m.aspxhome.com