我移植程序到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没有共享数据,它实际上包含业务逻辑。
main = (Activity1) findViewById((R.id.Activity1);
findViewById
只对视图起作用! 它并不意味着用于活动的活动更像是一个“屏幕”,而不是一个视图本身。
如果有可能为您的企业逻辑是单身,比我会建议使它如此。 这应该是最简单的方法。
你的POJO需要实现Parcelable接口。 然后,你可以把它们用里面意图putExtra使用getParcelableExtra在接下来的活动进行检索。 http://developer.android.com/reference/android/os/Parcelable.html
如果您通过发出从一个活动启动另一个活动的意向 ,你可以利用该方法传递的POJO putExtra()
在您收到的意向,那么你可以通过使用获得POJO回到新的活动getXXXExtra()
其中XXX北京时间POJO的类型。
你也应该看看http://developer.android.com/guide/topics/intents/intents-filters.html为了更好地理解什么意图是以及它们如何与活动一起工作。
编辑:在这里其他的答案说,你必须执行要么Parceable或Serializable接口。
我看你是混合两种不同的东西: 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 。 你必须在该链接的样本。