如何android多Activity间共享数据

 我来答
千锋教育
2015-12-08 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

方法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();
}
}
QQMSD8
2018-08-04 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
android中如果需要在多个activity之间共享数据可以使用applicaion 或者使用 sharedpreferences来存储数据, application是全局的, 而 sharedpreferences是持久化的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可以叫我表哥
2014-12-05 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464976
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
通过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();
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-05
展开全部
还是求大神来解答吧~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我爱宝贝7321
2014-12-05 · 超过11用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:14.4万
展开全部
16875921044xnhgyugtyu
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式