如何android多Activity间共享数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何android多Activity间共享数据相关的知识,希望对你有一定的参考价值。

方法1:在某个Activity中声明一个公共的static变量把共享数据作为静态变量

public class OneActivity extends Activity 
    public 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

public class MyApplication extends 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间共享数据

如何android多Activity间共享数据

如何android多Activity间共享数据

Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据

Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据

android Java 多个类更新activity UI(如何共享数据)