Android 主活动如何调用另一个活动A并将其上下文发送给它?
My MainActivity调用另一个需要访问MainActivity某些成员的活动A。 向活动a发送对主要活动(或其上下文)的引用而不使用复杂方法(如包裹等)的最佳方式是什么 有一些重量级机器人摔跤比赛,但我不确定这是否与我的问题有关 详细信息 我有一对多关系中的Alert和Alerted对象(Alerted表示发出警报的不同时间) AlertsListActivity扩展了ListActivity,它显示SQLite数据库表中警报对象的列表(主键:alertId)。它有一个AlertsListAdapter AlertedsListActivity有一个ListFragment,它显示了Alerted表中的Alerted对象列表(外键是alertId from Alerted table)。 它有一个AlertedsListAdapter AlertsListActivity需要调用AlertedsListActivity以显示已报警对象的列表。我使用了startActivityForResult() 内部警报SlistAdapterAndroid 主活动如何调用另一个活动A并将其上下文发送给它?,android,Android,My MainActivity调用另一个需要访问MainActivity某些成员的活动A。 向活动a发送对主要活动(或其上下文)的引用而不使用复杂方法(如包裹等)的最佳方式是什么 有一些重量级机器人摔跤比赛,但我不确定这是否与我的问题有关 详细信息 我有一对多关系中的Alert和Alerted对象(Alerted表示发出警报的不同时间) AlertsListActivity扩展了ListActivity,它显示SQLite数据库表中警报对象的列表(主键:alertId)。它有一个AlertsLi
public View getView(int position, View convertView, ViewGroup parent) {
final Alert alertItem = (Alert) mainActivity.alertsListAdapter.getItem(position);
final Alerted alertedItem = (Alerted) getItem(position);
...
我还需要警报对象,以便在每个警报列表项中显示来自它们的一些标识信息。因此,我需要对
mainActivity.alertsListAdapter的引用
AlertedsListActivity如何访问AlertsListActivity
更新:因为我没有得到任何解决方案,所以我实施了一个变通方法。我修改了我需要从主要活动中访问的数据。因此,警报对象被设置为可包裹对象,SQLOpenHelper被设置为单例对象
这允许从活动A访问数据。因为我没有得到任何解决方案,所以我实施了一种变通方法。我修改了我需要从主要活动中访问的数据。因此,警报对象被设置为可包裹对象,SQLOpenHelper被设置为单例对象
这允许从活动A访问数据。以下是一种简单、常见的方法:
单例通常有如下示例中的变量,“useThisContext”或“MainFeedISHER”
另一个例子
public class Feed
{
private static Feed ourInstance = new Feed();
private Feed()
{
Utils.Log("feed singleton launched");
freshestPostsForDisplay = new ArrayList<ParseObject>();
}
public synchronized static Feed getInstance()
{
return ourInstance;
}
public List<ParseObject> freshestPosts;
public MainActivity mainFeedIsHere;
例如,在Feed.java中,您可能会说
mainFeedIsHere.feedReload();
不言而喻,您必须检查它们是否为空(但它怎么可能是空的呢?),并且您必须保持它们的最新状态。(也就是说,无论出于何种原因,您可能希望更改“useThisContext”--这又是怎么回事?)
{有时你会有一个“集中式”的单件……也许是“状态”。。将所有这些结合在一起——这样任何人都可以根据需要“接触”任何“暴露”的东西。这就是游戏引擎的运行方式;这样你就可以在任何时间、任何地方或多或少地说SoundEffects.Booms()或Tanks.Speaker()或AI.FindVillains()。}
干杯 活动A需要访问的MainActivity的哪些成员?适配器本身还是底层数据?或许,如果您可以编辑您的问题以更全面地解释您的目标,我们可以为您提供比传递活动上下文更“安全”的想法。在AlertedsListActivity中,您似乎只需要alertId。只需使用您在startActivityForResult()
中使用的Intent对象的putExtra()
方法将其传递给AlertedsListActivity。我也需要Alert对象,以便在每个Alerted列表项中显示它们的一些标识信息。因此,我需要对mainActivity.alertsListAdapter
的引用。您可以使用putExtra()
方法将多个(原语)附加到意图;基本上,你想买多少就买多少。或者,您可以传递一个Alert
对象,但是您的Alert
类需要实现Serializable
或Parcelable
。你真的不想做你想做的事。
CLOUD.useThisContext = this;
FEED.mainFeedIsHere = this;
mainFeedIsHere.feedReload();