如何android多Activity间共享数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何android多Activity间共享数据相关的知识,希望对你有一定的参考价值。
方法1:在某个Activity中声明一个公共的static变量把共享数据作为静态变量
public class OneActivity extends Activitypublic static Data data = null;//声明的变量
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data = new Data();
public class TwoActivity extends Activity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Data data = OneActivity.data;
但是这样会增加activity之间的耦合度,不是很好
方法二:把共享数据作为放在Applicaiton中
定义一个MyApplication继承于Application
private Data data;
@Override
public void onCreate()
super.onCreate();
data = new Data();
public Data getData()
return data;
public void setData(Data data)
this.data = data;
将MyApplication配置到清单文件中作为程序启动的ApplicationContext
设置Application的name属性即可
在Activity中获取数据
public class MainActivity extends Activity@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplication application = (MyApplication) getApplication();
Data data = application.getData();
参考技术A android中如果需要在多个activity之间共享数据可以使用applicaion 或者使用 sharedpreferences来存储数据, application是全局的, 而 sharedpreferences是持久化的 参考技术B 通过Application Context进行变量共享
首先,建立一个继承自Application的类,将要共享的变量在其中声明:
代码:
import android.app.Application;
public class ApplicationTrans extends Application
private String value;
public String getValue()
return value;
public void setValue(String value)
this.value = value;
注意:需要注意的是,写完这个类之后需要在AndroidManifest.xml中在Application节点中进行设置
<application
android:name=".ApplicationTrans"//必须设置
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".TwoActivityShareDataActivity"
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=".SecondActivity" >
</activity>
</application>
接下来在MainActivity中进行操作:
((ApplicationTrans) getApplication()).setValue("我是通过Application传递的值");//赋值操作
在第二个Activity中获得该值:就行用这个值进行操作了
((ApplicationTrans) getApplication()).getValue();本回答被提问者和网友采纳 参考技术C 还是求大神来解答吧~ 参考技术D 16875921044xnhgyugtyu
以上是关于如何android多Activity间共享数据的主要内容,如果未能解决你的问题,请参考以下文章
Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据
Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据