在Activity之间如何传递数据,请尽可能说出你所知道的传递数据的方法,并详细描述其实现过程。

  答案:可以通过Intent对象、静态变量、剪切板和全局对象进行数据传递,具体的数据传递方法如下。

      1. Intent对象

     Intent对象时在Activity之间传递数据的传统方式(同样适合于Service和BroadcastReceiver)。可以通过Intent.putExtra方法设置要传递的数据,通过Intent.getXxxExtra方法获取传递的数据。其中的Xxx表示Int、String等字符串。下面代码使用Intent对象传递一个int类型的值,并在另一个Activity中接收该值。

     传递int类型的值

 Intent intent=new Intent(this,MyActivity.class);
//保存Integer类型的值
intent.putExtra("intent_integer",300);
startActivity(intent);

     获取传递的int类型的值

 int intentInteger=getIntent().getExrtras().getInt("intent_integer");

  传递数据的限制:只能传递Java简单类型的数据(包括简单类型的数组)以及实现了java.io.Serializable的类的对象实例(类成员也必须是可序列化的)。

     2. 静态变量

    将类成员定义成public static,就可以直接通过类成员来传递数据。使用静态变量可以传递任何类型的数据。

     3. 剪切板

    可以利用Android系统提供的剪切板存取数据,代码如下:

    将数据保存在剪切板中

  

1 Intent intent=new Intent(this,MyActivity.class);
2 //获得管理剪切板的对象(ClipboardManager)
3 ClipboardManager clipboard=(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
4 //向剪切板保存字符串
5 ClipData cd=ClipData.newPlainText("label","通过clipboard传递的数据");
6 clipboard.setPrimaryClip(cd);
7 startActivity(intent);

    从剪切板获取数据

ClipboardManager  clipboard=(ClipboardManager)getSystemService(context.CLIPBOARD_SERVICE);
//从剪切板中获得字符串
if(clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN){
ClipData cd=clipboard.getPrimaryClip();
Item item=cd.getItemAt(0);
txtView.setText(item.getText().toString());
}

4. 全局对象

  可以为每一个应用程序定义一个全局的对象。该对象的创建由系统负责。使用全局对象需要一个继承自android.app.Application的类,并在该类中定义任何类型的成员变量和方法。

 public class MyApp extends Application
{
public String country;
public Data data=new Data();//Data类不需要可序列化
}

  然后在AndroidManifest.xml文件中定义该类。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=" "
android:versionCode="1"
android:versionName="1.0">
<application android:name=".MyApp" android:icon="@drawable/icon" android:label="@String/app_name">
......
</manifest>

  可以在应用程序中的任何地方通过如下代码获取MyApp类的对象。

  

MyApp myapp=(MyApp)getApplicationContext();

在Activity之间如何传递数据,请尽可能说出你所知道的传递数据的方法,并详细描述其实现过程。的更多相关文章

  1. 如何在数据表当中找出被删掉的数据行ID

    这个问题是一年前我刚步入IT行业的一个面试题,当时抓破头皮都想不到的问题,但现在回想过去自身不禁感到可笑,不多扯直接写解决方案.如何在数据表当中找出被删掉的数据行ID,意思是:在一堆的数据当中,让你找 ...

  2. C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id

    紧接上一篇,将List<Menu>的扁平结构数据, 转换成树形结构的数据 返回给前端   ,   废话不多说,开撸! --------------------- 步骤: 1. 建 Menu ...

  3. 【mysql】修改数据时候,抛出safe mode相关错误,处理方法

    在mysql5中,可以设置safe mode,比如在一个更新语句中 UPDATE table_name SET bDeleted=0; 执行时会错误,报: You are using safe upd ...

  4. Activity之间传递数据的方式及常见问题总结

    Activity之间传递数据一般通过以下几种方式实现: 1. 通过intent传递数据 2. 通过Application 3. 使用单例 4. 静态成员变量.(可以考虑 WeakReferences) ...

  5. Activity之间传递数据或数据包Bundle,传递对象,对象序列化,对象实现Parcelable接口

    package com.gaojinhua.android.activitymsg; import android.content.Intent; import android.os.Bundle; ...

  6. Android学习之Activity之间的数据传递

    Activity与Activity之间很多情况下都需要进行数据的传递,下面就用几个简单的例子来看一下. (一).一个Activity启动另一个Activity并将数据传递到这个Activity当中 思 ...

  7. Activity之间的数据传递-android学习之旅(四十七)

    activity之间的数据传递主要有两种,一种是直接发送数据,另一种接受新启动的activity返回的数据,本质是一样的 使用Bundle传递数据 Intent使用Bundle在activity之间传 ...

  8. Activity之间传递大数据问题

    Android开发人员都知道,Intent适用于在不同的Activity之间传递数据,包括参数.字符串.以及序列化的对象等.但是笔者所做的项目用到了使用Intent 传递Bitmap图片对象,图片的数 ...

  9. 【Android基础】利用Intent在Activity之间传递数据

    前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通.   从一个Activ ...

随机推荐

  1. 将Map转换为Java 对象

    public class MapUtil { public static Object convert2Object(Class clazz,Map<String,Object[]> ma ...

  2. hdu 3400 Line belt

    题意:给你两条线段AB,CD:然后给你在AB,CD上的速度P,Q,在其它部分的速度是R,然后求A到D的最短时间. 思路:用三分枚举从AB线段上离开的点,然后再用三分枚举在CD的上的点找到最优点,求距离 ...

  3. [Android] createTrack_l

    在分析AudioTrack的时候,第一步会new AudioTrack,并调用他的set方法.在set方法的最后调用了createTrack_l创建音轨.我们现在来分析createTrack_l的流程 ...

  4. Qt自定义事件的实现(军队真正干活,但要增加监军,大平台通知事件,事件内容自定义)

    初学Qt,用了Qt自带的事件,然后想怎么才能定义自己的事件呢?又如何使用自定义事件呢?看了篇文章,说先要子类化QEvent,然后定义自己的QEvent::Type,然后重写QWidget::event ...

  5. Filter plugins ? mutate:

    filter { grok { match => [ "message" , "\s*%{IPORHOST:clientip}\s+\-\s+\-\s+\[%{HT ...

  6. 【HDOJ】1316 How Many Fibs?

    Java水了. import java.util.Scanner; import java.math.BigInteger; public class Main { public static voi ...

  7. Android 迷之Version管理

    很多时候会搞混Android中的几个Version minSdkVersion:指你所开发的应用程序能够兼容的最低系统.比如,你现在开发一款暴风.APK,你希望它能在Android已经发布的所有版本的 ...

  8. C - Courses - hdu 1083(模板)

    一共有N个学生跟P门课程,一个学生可以任意选一 门或多门课,问是否达成: 1.每个学生选的都是不同的课(即不能有两个学生选同一门课) 2.每门课都有一个代表(即P门课都被成功选过) 输入为: P N( ...

  9. 如何唯一确定一台iOS设备

    如果你的iOS应用需要针对设备做特定的操作,或者需要硬件的信息来进行判定等等的,你就需要对iOS设备进行唯一性的判定. 苹果设备有个先天的东西符合这个需求,UDID,这个东东用iTunes就可以看到, ...

  10. Extjs 4.2.0 MVC 架构

    内容: 1. 文件结构 2. 创建项目 3. 定义控制器 4. 定义视图 5. 控制Grid 6. 创建Model和Store 7. 通过Model保存数据 8. 保存到服务器端 大型客户端程序通常都 ...