Android开发两个activity之间传值示例详解 目录 使用Inten的putExtra传递 使用Intention的Bundle传递 使用Activity销毁时传递数据 SharedPreferences传递数据 使用序列化对象Seriazable 使用静态变量传递数据 handler 使用Inten的putExtra传递 第一个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传值的资料请关注我们其它相关文章!
沃梦达教程
本文标题为:Android开发两个activity之间传值示例详解
猜你喜欢
- Android studio实现动态背景页面 2023-05-23
- 详解flutter engine 那些没被释放的东西 2022-12-04
- iOS 对当前webView进行截屏的方法 2023-03-01
- Android实现轮询的三种方式 2023-02-17
- Android实现监听音量的变化 2023-03-30
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- Flutter实现底部和顶部导航栏 2022-08-31
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02