我正在开发一个需要两个活动之间进行交互的应用程序,我不确定实现它的最佳方法是什么:
如果准备添加新活动,如何通知我的日志活动? 另外,我应该在哪里将事件添加到数据库?从Logbook Activity中,当我将它添加到ListView,或者从NewEvents Activity添加到它时,它会立即生效吗?
谢谢!
答案 0 :(得分:2)
好的,我找到了如何使用BroadcastReceiver:
在我的日志活动中,我只是设置了一个新的自定义接收器onCreate():
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logbook);
registerReceiver(new EventReceiver(this), new IntentFilter("SEND_NEW_EVENT"));
现在,我可以在newEventActivity中进行调用:
public void sendToLogbook(int eventId){
Intent i = new Intent("SEND_NEW_EVENT");
i.putExtra("newEvent", this.newEvents[eventId]);
sendBroadcast(i);
}
当然,我必须创建我的CustomReceiver类,并覆盖onReceive()方法来做我想要的事情:
public class EventReceiver extends BroadcastReceiver {
private ActivityLogbook activity;
public EventReceiver(ActivityLogbook activity) {
this.activity = activity;
}
public void onReceive(Context context, Intent i) {
this.activity.addToReport((Event)i.getParcelableExtra("newEvent"));
}
}
到目前为止效果很好,但如果您对此有任何意见/疑虑,请告诉我!
谢谢!
答案 1 :(得分:1)
如果我错误地回忆起android sdk中包含的Notepad项目,并且也是在线教程的一部分,这是一个很好的例子,可以满足您的需求。
答案 2 :(得分:0)
借用MV- *(模型 - 视图 - 某些或其他)模式,将您对模型的概念(在本例中为您的事件对象)和显示它们的内容(视图,或者在您的情况下为活动)分开)它会变得更加清晰。
如果您的活动位于全球所有活动可以与之互动的地方,那么您可以使用该模型并从您选择的任何地方显示模型。
一个简单的建议是有一个类(EventController或类似的东西),它允许您与Events集合进行交互,并通过派生的Application类使其可用。如果这没有意义,我可以进一步解释。我有一个我在Android应用程序中使用的模式,所有Activity类都可以访问自定义的全局Application实例,所以我的模型是一个模型,可以通过我想要访问的任何Activity访问。
这只是一种方法,而且一如既往,有许多方法可能适合您的需求。
答案 3 :(得分:0)
一种可能性是:
你可以多改进一点: