Android使用意图传递数据的四种方式
来源:互联网 发布:如何锻炼pc肌肉知乎 编辑:程序博客网 时间:2024/06/14 13:40
1.使用通用方式传递数据
发送:
Intent intent = new Intent(MainActivity.this,OtherActivity.class);//在意图中传递数据intent.putExtra("name", "小明");intent.putExtra("age", 21);intent.putExtra("address", "西安");//启动意图startActivity(intent);
接收:
Intent intent = getIntent();int age = intent.getIntExtra("age", 0);String name = intent.getStringExtra("name");String address = intent.getStringExtra("address");2.使用全局变量方式传递数据
设置一个Myapp.java
public class MyApp extends Application {public String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public MyApp() {// TODO Auto-generated constructor stub}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();setName("张三");}
发送:
public void onClick(View v) {// TODO Auto-generated method stubmyApp = (MyApp)getApplication();myApp.setName("jack");Intent intent = new Intent(MainActivity.this,OtherActivity.class);startActivity(intent);
接收:
myApp = (MyApp)getApplication();textView.setText("appName-->" + myApp.getName());Manifest.xml里
<application android:name=".MyApp" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.android_app.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".OtherActivity"></activity> </application>3.使用剪贴板方式传递
发送:
public void onClick(View v) {// TODO Auto-generated method stub//从android系统中调用剪切板的方法ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);String name = "jack";clipboardManager.setText(name);Intent intent = new Intent(MainActivity.this,OtherActivity.class);startActivity(intent);
接收:
textView = (TextView)this.findViewById(R.id.msg);ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);String msg = clipboardManager.getText().toString();4.使用剪贴板传递复杂数据
声明一个MyData.java类实现Serializable接口保证其为可序列化的
public class MyData implements Serializable {private static final long serialVersionUID = 1L;private String name;private int age;public MyData() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public MyData(String name, int age) {super();this.name = name;this.age = age;}@Overridepublic String toString() {return "MyData [name=" + name + ", age=" + age + "]";}}
发送端:
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button)this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@SuppressWarnings("deprecation")@SuppressLint("NewApi")@Overridepublic void onClick(View v) {MyData myData = new MyData("xiaoming",21);ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();String base64String = "";try{ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);objectOutputStream.writeObject(myData);base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);objectOutputStream.close();}catch(Exception e){}ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);clipboardManager.setText(base64String);Intent intent = new Intent(MainActivity.this,OtherActivity.class);startActivity(intent);}});
接收端:
public class OtherActivity extends Activity {private TextView textView;public OtherActivity() {// TODO Auto-generated constructor stub}@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.other);textView = (TextView)this.findViewById(R.id.msg);ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);@SuppressWarnings("deprecation")String msg = clipboardManager.getText().toString();//将从剪切板中取回的数据还原byte[] base64_byte = Base64.decode(msg, Base64.DEFAULT);ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);try{ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);MyData myData = (MyData)objectInputStream.readObject();textView.setText(myData.toString());}catch(Exception e){}}}
5.使用静态变量传递数据
接收端:
public class OtherActivity extends Activity {private TextView textView;public static String name;public static int age;public OtherActivity() {// TODO Auto-generated constructor stub}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.other);textView = (TextView)this.findViewById(R.id.msg);textView.setText("name-->>"+ name + "\n" + "age-->>" + age);}}
发送端:
public void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(MainActivity.this,OtherActivity.class);OtherActivity.age = 21;OtherActivity.name = "xiaoming";startActivity(intent);}});
6.使用意图传递值返回结果
发送:
package com.example.android_intent_forresult;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity {private Button button;private final static int REQUESTCODE = 1;private EditText one,two,result;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button)this.findViewById(R.id.button);one = (EditText)this.findViewById(R.id.one);two = (EditText)this.findViewById(R.id.two);result = (EditText)this.findViewById(R.id.result);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int a = Integer.parseInt(one.getText().toString());int b = Integer.parseInt(two.getText().toString());Intent intent = new Intent(MainActivity.this,OtherActivity.class);intent.putExtra("a",a);intent.putExtra("b", b);startActivityForResult(intent, REQUESTCODE);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if(resultCode == 2){if(requestCode == REQUESTCODE){int three = data.getIntExtra("three", 0);result.setText(String.valueOf(three));} }}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
接收:
package com.example.android_intent_forresult;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class OtherActivity extends Activity {private Button button;private TextView textView;private EditText editText;public OtherActivity() {}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.other);button = (Button)this.findViewById(R.id.button2);textView = (TextView)this.findViewById(R.id.msg);editText = (EditText)this.findViewById(R.id.three);Intent intent = getIntent();int a = intent.getIntExtra("a", 0);int b = intent.getIntExtra("b", 0);textView.setText(a + "+" + b + "=" + "?");button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {Intent intent = new Intent();int three = Integer.parseInt(editText.getText().toString());intent.putExtra("three", three);//通过intent对象返回结果,必须调用setResult方法setResult(2,intent);finish();//结束Activity的生命周期}});}}
- Android使用意图传递数据的四种方式
- Android使用意图传递数据的四种方式
- Android使用意图传递数据的几种方式
- Android学习笔记(十二)——使用意图传递数据的几种方式
- 使用意图传递数据之通用方式
- Android使用意图传递数据之全局变量
- 老罗Android视频第一版-------android使用意图传递数据之通用方式
- android使用意图传递数据之全局变量传递
- [Android]通过意图传递数据
- android使用意图打开activity的两种方式
- android开发入门-1(使用意图传递数据)
- android使用意图传递数据之返回结果
- Android Intent意图用于Activity之间的数据传递
- 老罗Android视频第一版-------android使用意图传递数据之全局变量传递
- 老罗Android视频第一版-------android使用意图传递数据之剪切板传递
- 老罗Android视频第一版-------android使用意图传递数据之剪切板传递2
- 使用意图传递数据之返回结果
- Android数据传递的四种方法
- HDU 3966 Aragorn's Story 树链剖分模板
- SHUTDOWN: waiting for active calls to complete处理
- s3c2440的UART功能测试
- Xmonad——在Ubuntu12.04.2上使用Xmonad窗口管理器
- MATLAB中mexFunction函数的接口规范
- Android使用意图传递数据的四种方式
- nhibernate系列之一 NHSessionManager 支持多数据库
- MySQL Internals
- CameraCenterTest
- 黑马程序员之UDP
- Linux Gstreamer and GST-OMX插件
- ORA-01652: 多个外部数据表(Oracle调MSSS)连接方式不当,造成临时空间不足
- 黑马程序员-JAVA的面向对象编程
- 进intel公司要什么标准