在activity之间通过静态变量传递数据

Posted 范仁义

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在activity之间通过静态变量传递数据相关的知识,希望对你有一定的参考价值。

在activity之间通过静态变量传递数据

一、简介

主要作用:解决intent不能传递非序列化的对象

评价:简单方便,但是容易发生内存泄露,所以要及时回收内存

 

二、具体操作

1、在传输数据的页面弄好数据,传递给接收数据的页面

Obj1 obj=new Obj1("fry",22);
Activity01.obj=obj;

2、在接收数据的页面显示数据

输出obj即可

3、具体代码

传输数据的页面

Intent intent=new Intent();//初始化intent
intent.setClass(MainActivity.this,Activity01.class);//连接
Obj1 obj=new Obj1("fry",22);
Activity01.obj=obj;
startActivity(intent);//打开activity

接收数据的页面

public static Obj1 obj;

setContentView(R.layout.activity01);
textView_ans=(TextView) findViewById(R.id.textView_ans);
textView_ans.setText("obj: "+obj);

 4、回收内存

在接收数据的页面

protected void onDestroy() {
  super.onDestroy();
  obj=null;
}

java会自动回收指向null的对象

 

三、代码实例

结果图

代码

activityStaticDataSend.MainActivity

 1 package activityStaticDataSend;
 2 
 3 
 4 
 5 
 6 
 7 
 8 import com.example.activityStaticDataSend.R;
 9 
10 import android.app.Activity;
11 import android.content.Intent;
12 import android.content.Loader;
13 import android.os.Bundle;
14 import android.view.View;
15 import android.view.View.OnClickListener;
16 import android.widget.Button;
17 
18 
19 
20 public class MainActivity extends Activity{
21     private Button btn_openActivty;//创建一个button对象
22      protected void onCreate(Bundle savedInstanceState) {
23             super.onCreate(savedInstanceState);//父类操作
24             setContentView(R.layout.activity_main);//引入名为activity_main的界面
25             btn_openActivty=(Button) findViewById(R.id.btn_openActivity);//找id为btn_openActivity的button
26             btn_openActivty.setOnClickListener(new OnClickListener() {//设置button点击监听
27                 
28                 @Override
29                 public void onClick(View v) {//onclick事件
30                     // TODO Auto-generated method stub
31                     Intent intent=new Intent();//初始化intent
32                     intent.setClass(MainActivity.this,Activity01.class);//连接
33                     Obj1 obj=new Obj1("fry",22);
34                     Activity01.obj=obj;
35                     startActivity(intent);//打开activity
36                 }
37             });
38         }
39 }

activityStaticDataSend.Activity01

 1 package activityStaticDataSend;
 2 
 3 
 4 
 5 
 6 import com.example.activityStaticDataSend.R;
 7 
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.util.Log;
11 import android.widget.TextClock;
12 import android.widget.TextView;
13 
14 public class Activity01 extends Activity{
15     public static Obj1 obj;
16     private TextView textView_ans;
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         // TODO Auto-generated method stub
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity01);
22         textView_ans=(TextView) findViewById(R.id.textView_ans);
23         textView_ans.setText("obj: "+obj);
24     }
25     @Override
26     protected void onDestroy() {
27         // TODO Auto-generated method stub
28         super.onDestroy();
29         obj=null;
30     }
31 }

 

以上是关于在activity之间通过静态变量传递数据的主要内容,如果未能解决你的问题,请参考以下文章

Android:将片段和弹出窗口的点击事件中生成的变量传递给活动的方法

kotlin:如何在两个片段之间传递数据

安卓初学,多个窗体Activity之间如何互相访问变量?

如何在导航抽屉活动模板中的片段之间传递字符串变量

android 中如何使用intent通过传递变量传递数据

通过导航组件在底部导航片段之间传递数据