由于Android SDK的限制,不能在调用Activity时直接访问其他Activity对象。因此不能像普通对象之间传递数据一样通过构造方法和类成员来传递数据。所以Android SDK提供特有的传递数据的几种方式:
1.Intent对象(传输数据仅限简单数据和实现序列话的对象)
传递string类型数据:
Intent intent= new Intent(this,MainActivity.class);
intent.putExtra("str","message");
startActivity(intent);
接受string类型数据:
String str=getIntent().getExtras().getString("str");
2.静态变量具体实现步骤
将需要共享的对象或者数据声明为静态,可以传递任何类型的数据。
原理其实很简单:就是在接收端的Avtivity里面设置static的变量,在发送端这边改变静态变量的值,然后启动意图
可以利用Android自带的剪切板功能传送数据:
传递数据:
Intent intent=new Intent(this,MainActivity.class);
ClipboardManager cliper=(ClipboardManager)getSystemServer(Context.CLIPBOARD_SERVER);
cliper.setText("message");
startActivity(intent);
ClipboardManager cliper=(ClipboardManager)getSystemServer(Context.CLIPBOARD_SERVER);
String str=cliper.getText().toString();
4.全局对象
(1)为每个应用程序定义一个全局的对象,由系统负责创建对象,使用全局对象需要继承Android.app.Application类,可以在该类中定义任何方法。
package com.example.transmitdata;import android.app.Application;
public class mAPP extends Application(){
public String str;
public Data data;
}
(2)在AndroidManifest.xml文件中定义该类<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android ="http://schemas.andoid.com/apk/res/android"
package="com.example.transmitdata"
<application android:name=".mAPP "
......
/>
/>
mAPP mapp=(mAPP)getApplicationContext();