Android 主活动如何调用另一个活动A并将其上下文发送给它?

Android 主活动如何调用另一个活动A并将其上下文发送给它?,android,Android,My MainActivity调用另一个需要访问MainActivity某些成员的活动A。 向活动a发送对主要活动(或其上下文)的引用而不使用复杂方法(如包裹等)的最佳方式是什么 有一些重量级机器人摔跤比赛,但我不确定这是否与我的问题有关 详细信息 我有一对多关系中的Alert和Alerted对象(Alerted表示发出警报的不同时间) AlertsListActivity扩展了ListActivity,它显示SQLite数据库表中警报对象的列表(主键:alertId)。它有一个AlertsLi

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()

内部警报SlistAdapter

    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();