Android使用意图传递数据的四种方式
2013-05-30 23:13
609 查看
1.使用通用方式传递数据
发送:
接收:
设置一个Myapp.java
发送:
接收:
发送:
接收:
声明一个MyData.java类实现Serializable接口保证其为可序列化的
发送端:
接收端:
5.使用静态变量传递数据
接收端:
发送端:
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;
@Override
protected 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() {
@Override
public 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);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == 2){
if(requestCode == REQUESTCODE){
int three = data.getIntExtra("three", 0);
result.setText(String.valueOf(three));
}
}
}
@Override
public 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() {
}
@Override
protected 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() {
@Override
public 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的生命周期
}
});
}
}
发送:
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 } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); setName("张三"); }
发送:
public void onClick(View v) { // TODO Auto-generated method stub myApp = (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; } @Override public 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") @Override public 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") @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.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 } @Override protected 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 stub Intent 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;
@Override
protected 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() {
@Override
public 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);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == 2){
if(requestCode == REQUESTCODE){
int three = data.getIntExtra("three", 0);
result.setText(String.valueOf(three));
}
}
}
@Override
public 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() {
}
@Override
protected 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() {
@Override
public 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 之 在Activity之间传递数据(使用意图传递数据之通用方式:)
- android之 在Activity之间使用意图传递数据(使用静态变量传递数据)
- Android使用意图传递数据之全局变量
- Android学习笔记(十二)——使用意图传递数据的几种方式
- 使用意图传递数据之通用方式
- Android入门篇六:使用意图传递数据之返回结果
- android开发入门-1(使用意图传递数据)
- android使用Intent传递数据 2 种方式(Intent和Bundle)
- android使用意图传递数据之返回结果
- android使用意图传递数据之全局变量传递
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
- Android入门篇二:使用意图在Activity之间传递数据
- Android学习笔记(十二)——使用意图传递数据的几种方式
- Android 使用意图传递数据
- Android数据的四种存储方式 SharePreferences使用
- 5. Android使用意图传递数据之全局变量传递-Application类
- Android 学习之路一:Activity之间传递数据的四种方式
- Android数据的四种存储方式(三) —— SharePreferences