机器人:如何分享活动之间的POJO(android: How to share a POJO bet

2019-11-05 06:16发布

我移植程序到Android。 我对所有的POJO我的业务逻辑,所以我需要使用活动作为一个纯粹的前端。

问题是,我不知道如何共享活动之间的POJO; 我已经试过这一点,但它不工作:

class Activity1 extends Activity{
Logic logic=new Logic();

public Logic getLogic(){
return logic
}
}

class Activity2 extends Activity{
Logic logic;
public void onCreate(Bundle savedInstanceState) {
    main = (Activity1) findViewById((R.id.Activity1);
    logic= main.getLogic(); 
}
}

请注意,POJO没有共享数据,它实际上包含业务逻辑。

Answer 1:

main = (Activity1) findViewById((R.id.Activity1);

findViewById只对视图起作用! 它并不意味着用于活动的活动更像是一个“屏幕”,而不是一个视图本身。

如果有可能为您的企业逻辑是单身,比我会建议使它如此。 这应该是最简单的方法。



Answer 2:

你的POJO需要实现Parcelable接口。 然后,你可以把它们用里面意图putExtra使用getParcelableExtra在接下来的活动进行检索。 http://developer.android.com/reference/android/os/Parcelable.html



Answer 3:

如果您通过发出从一个活动启动另一个活动的意向 ,你可以利用该方法传递的POJO putExtra() 在您收到的意向,那么你可以通过使用获得POJO回到新的活动getXXXExtra()其中XXX北京时间POJO的类型。

你也应该看看http://developer.android.com/guide/topics/intents/intents-filters.html为了更好地理解什么意图是以及它们如何与活动一起工作。

编辑:在这里其他的答案说,你必须执行要么Parceable或Serializable接口。



Answer 4:

我看你是混合两种不同的东西: findViewById将让你View ,而不是一个Activity像你试图做什么。

如果你的逻辑没有保持活动的状态,你可以简单地创建两个活动的新对象

Logic logic=new Logic();

如果你想保持状态,假设它是一个POJO ,你可以通过意图发送数据时,你是“通话中”的第二项活动

intent.putExtra("MyInt", 123);
intent.putExtra("MyString", "hello!");
//...

然后在第二活动

intent.getIntExtra("MyInt"); // 123
intent.getStringExtra("MyString"); //"hello!"

另一种选择是implemente parcelable 。 你必须在该链接的样本。



文章来源: android: How to share a POJO between Activities