在新活动中维护父子句柄

时间:2016-05-25 19:09:00

标签: android sqlite calendar parent-child

使用Android.Studio;

为了让您快速上手,我设计的日历与日期选择器类似,只需滑动到日期事件的列表视图。事件从我们的站点获得,并存储在本地数据库中。 CalendarFragment setOnDateChangeListener更新ScheduleFragment事件列表。 CalendarFragment,ScheduleFragment是SectionsPagerAdapter的子代,它是HandiCRM的子代。 HandiCRM有一个可变的DBHandler数据库;它保持对本地数据库的访问,包括必要表之间的DROP,CREATE,INSERT,UPDATE和SELECT命令。因为这些活动都是同时存在的,所以我已经能够将公共父句柄传递给每个孩子,以允许类似于" Parent.Parent.database"

[tl; dr]每个事件setOnClickListener都会为ShowEvent.class创建一个新的Intent,它应该填充存储在数据库中的信息。我似乎收到的问题是,当在ShowEvent中创建DBHandler时,DBHandler在尝试从表中选择任何信息时返回零结果。此外,因为它创建了一个Intent来显示这个Activity,所以我无法传递Parent对象,因为Activity不可序列化(也不是数据库)。有可能我可以放一堆垃圾来显示这个页面所需的信息,但它不会允许任何修改。所以,我需要的是一种不同的方式来弹出一个Activity窗口,以允许我保持面向对象的Parent->子句柄,或者一种方法将句柄传递给EXTRAS之外的子句。

我已经研究了一段时间,即使有相同性质的请求,回复总是相同的"使用putExtra()"而不是解决实际问题。

1 个答案:

答案 0 :(得分:1)

据我了解您的应用程序,我认为处理问题的最佳方法是使您的DBHandler保持静态。

static DBHandler database;

现在,在任何子活动中,您都应该能够以下列方式访问此变量:

HandiCRM.database
  

将变量定义为static允许您从中访问变量   包内的任何活动。

因此,您可以在子活动本身中执行查询。所以没有必要传递值。