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

目录
  • 使用Inten的putExtra传递
  • 使用Intention的Bundle传递
  • 使用Activity销毁时传递数据
  • SharedPreferences传递数据
  • 使用序列化对象Seriazable
  • 使用静态变量传递数据
  • handler

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

以上就是Android开发两个activity之间传值示例详解的详细内容,更多关于Android两个activity传值的资料请关注我们其它相关文章!

(0)

相关推荐

  • Android 中两个Activity 之间的传值问题

    Android 中两个Activity 之间的传值问题 在Android项目中,有时需要一些全局的静态变量来保存一些数据,这样在关闭赋值界面后,其他的页面还可以调用这些数据. 但是我们知道,在Java中全局静态变量(java中没有全局变量这一个概念,但是java提供了public static关键字来实现一些类似于全局变量的关键字)都是在程序加载时就放人到内存中,它是存储在方法区里的.如果程序不结束,它将一直存在.这是会影响到系统的性能的.那么在android中可不可以不通过这种方式来传递值呢?

  • Android中点击按钮启动另一个Activity及Activity之间传值问题

    场景 点击第一个Activity中的按钮,启动第二个Activity,关闭第二个Activity,返回到第一个Activity. 在第一个Activity中给第二个Activity传递值,第二个Activity中获取并显示. 打开第二个Activity Activity传值 实现 启动另一个Activity 在第一个Activity中的按钮的点击事件中 Button secondActivityButton = (Button)findViewById(R.id.secondActivity);

  • Android Activity的跳转与传值详解

    Android Activity的跳转与传值详解 Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据. Intent是Android一个很重要的类.Intent直译是"意图",什么是意图呢?比如你想从这个Activity跳转到另外一个Activity,这就是一个意图.Intent类在Android系统中的作用很大,在此不详细说了,后面有文章介绍! Activity跳转,无返回结果 这是最简单的Activity跳转方式.从一个Activity启动

  • Android Activity活动页面跳转与页面传值

    目录 概述 Intent 显示Intent启动 隐式Intent启动 启动其他程序 网页浏览 拨号界面 根据包名打开软件 根据类名打开界面 startActivityForResult 主页面 跳转界面 页面传值 Intent.putExtra 传值 借助 Bundle 传值 概述 Android开发少不了的就是页面之间的跳转,或者想要呼叫打开其他应用等 Intent Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以指明当前组件想要执行的运作,还可以在不同组件之间传递

  • Android开发中Activity创建跳转及传值的方法

    在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider). 今天所介绍的就是Android开发中的四大组件之一:Activity,其他那三大组件以后再进行介绍.说道Android中的Activity,如果你做过iOS开发的话,Activity类似于iOS中的ViewController(视图控制器).在应用中能看到的东西都是放在活动中的.活动是安卓开发比较重要的东

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

    目录 使用Inten的putExtra传递 使用Intention的Bundle传递 使用Activity销毁时传递数据 SharedPreferences传递数据 使用序列化对象Seriazable 使用静态变量传递数据 handler 使用Inten的putExtra传递 第一个Activity中 //创建意图对象 Intent intent = new Intent(this,MainActivity2.class); //设置传递键值对 intent.putExtra("name&quo

  • Android开发flow常见API的使用示例详解

    目录 collect通知flow执行 launchIn()指定协程作用域通知flow执行 catch{}捕捉异常 merge()合流 map{}变换发送的数据类型 总结 collect通知flow执行 public suspend inline fun <T> Flow<T>.collect(crossinline action: suspend (value: T) -> Unit): Unit = collect(object : FlowCollector<T&g

  • python开发中两个list之间传值示例

    由于改代码因为这个问题卡了半个小时特此记录 首先对于一个单层的列表 赋值如下,可以看见,如果直接使用 = 的话.其中一个变换便会引起另外一个变换,这时因为这两个list被python解释的时候使用的相同的地址,如下面输出的 id()中的内容,所以此时如果想让一个列表接收到另外一个列表的值,并且在接收到值后不会因为其中任意一个值的改变而改变,这时候就需要使用copy方法,这里可以解释成,当使用了copy方法后,python单独创建了找个一个内存区的地址放了新的那个值. a = [ 1,2,3] b

  • Go语音开发中常见Error类型处理示例详解

    目录 前言 透明错误处理策略 带来的问题 哨兵(Sentinel)错误处理策略 带来的问题 1.对errors.Error()的依赖 2.定义的错误类型会被公开 Error types 带来的问题 不透明错误处理策略(Opaque errors) 带来的问题 总结 前言 上文我们了解了 Error 在Go 中的设计理念.单从理念上来看, Error 的设计似乎有利于逻辑处理.但实际上,在开发过程中,我们还会遇到各种各样的困难.为了优化开发的流程,开发者们发明了很多处理 Error 的做法.今天我

  • Android开发高仿课程表的布局实例详解

    先说下这个demo,这是一个模仿课程表的布局文件,虽然我是个菜鸟,但我还是想留给学习的人一些例子,先看下效果 然后再来看一下我们学校的app 布局分析 先上一张划分好了的布局图 首先整个页面放在一个LinearLayout布局下面,分为上面和下面两个部分,下面一个是显示课程表的详细信息 1:这个没什么好讲的,就是直接一个LinearLayout布局,然后将控件一个TextView用来显示年份,一个View用来当作竖线,一个Spinner用来显示选择周数 2:这个是显示星期几的部件,是我自定义的V

  • javascrip高级前端开发常用的几个API示例详解

    目录 MutationObserver API 特点 IntersectionObserver API 举个例子 图片懒加载 无限滚动 getComputedStyle() API 与style的异同 getBoundingClientRect API 应用场景 1.获取 dom 元素相对于网页左上角定位的距离 2.判断元素是否在可视区域内 MutationObserver MutationObserver 是一个可以监听 DOM 结构变化的接口. 当 DOM 对象树发生任何变动时,Mutati

  • Android开发App启动流程与消息机制详解

    目录 引言 1.第一步了解 ThreadLocal 2.App的启动流程 3.Activity中创建Handler 引言 相信很多人对这个问题不陌生,但是大家回答的都比较简单,如谈到app启动流程有人就会是app的生命周期去了,谈到消息机制有人就会说looper循环消息进行分发,如果是面试可能面试官不会满意,今天我们搞一篇完善的源码解析来进行阐述上面的问题 1.第一步了解 ThreadLocal 什么是ThreadLocal呢,专业的来讲,ThreadLocal 是一个线程内部的数据存储类,通过

  • Android开发基础实现音频文件的播放详解

    目录 前言 实现方法 最终效果 总结 前言 上一篇(安卓开发基础——实现最简单的视频播放我们简单的实现了一个播放视频的功能,这一节我们来实现App对音频文件的播放功能,本文主要是依靠MediaPlayer类去实现Android播放音乐的. 实现方法 和上一篇的播放功能实现类似,我们首先需要一个文件夹去放我们的音频文件,我们在main文件夹下新建一个assets文件夹放入我们的音频文件 然后我们在布局中添加一张图片,下面加上三个处理播放控制的按钮,播放,暂停(暂停播放),停止(正在播放就停止播放,

  • java开发ShardingSphere的路由引擎类型示例详解

    目录 ShardingSphere的路由引擎类型 路由引擎类型 标准路由 路由逻辑 总结 ShardingSphere的路由引擎类型 本篇文章源码基于4.0.1版本 上篇文章我们了解到了ShardingSphere在路由流程过程中,根据不同类型的SQL会现在不同的路由引擎,而ShardingSphere支持的路由规则也很多了,包括广播(broadcast)路由.混合(complex)路由.默认数据库(defaultdb)路由.无效(ignore)路由.标准(standard)路由以及单播(uni

随机推荐