Android 使用getApplicationContext获取另一个活动上下文

Android 使用getApplicationContext获取另一个活动上下文,android,android-activity,android-context,Android,Android Activity,Android Context,我想获取另一个活动的上下文,我在其中创建了一个对象(一个适配器,其中包含我需要在第二个活动中显示的对象列表) 我该怎么做 我在Activity1中创建了一个包含对象列表的适配器 仅在将使用适配器的活动中创建适配器,并且仅在该活动中使用该适配器 使用适配器,我可以显示对象列表,但我需要在Activity2中显示它们 然后将适配器创建代码从Activity1移动到Activity2。或者,如果您在两个位置都需要相同类型的适配器,请复制代码,或者让两个活动从具有适配器创建代码的某个基类继承。与Comm

我想获取另一个活动的
上下文
,我在其中创建了一个对象(一个适配器,其中包含我需要在第二个活动中显示的对象列表)

我该怎么做

我在Activity1中创建了一个包含对象列表的适配器

仅在将使用
适配器的活动中创建
适配器
,并且仅在该活动中使用该
适配器

使用适配器,我可以显示对象列表,但我需要在Activity2中显示它们


然后将适配器创建代码从Activity1移动到Activity2。或者,如果您在两个位置都需要相同类型的适配器,请复制代码,或者让两个活动从具有适配器创建代码的某个基类继承。

与Commonware建议类似,我在活动之外定义了一个公共适配器类,仅在类文件中(抱歉,这是C#代码,但如果您已经编写了适配器,那么您应该明白这一点)

CommonAdapter.java

public class CommonAdapter : ArrayAdapter<AttachmentDetails>
{
    private readonly List<AttachmentDetails> _attachments;

    public CommonAdapter( Context context, List<AttachmentDetails> attachments )
        : base( context, 0, attachments )
    {       
        _attachments = attachments;
    }

    public override View GetView( int position, View convertView, ViewGroup parent )
    {
        ...
    }
}

您不太可能需要查看另一个活动的上下文。这似乎是一个XY问题。您在活动2中尝试使用活动1的上下文做什么(我知道您在A2中显示了一个对象列表,但在w/A1中必须做什么?)?@SamusArin我在Activity1中创建了一个包含对象列表的适配器。使用该适配器,我可以显示对象列表,但我需要在Activity2中显示它们。这就是为什么我考虑获取Activity1的上下文,以便将其传递给Activity2中适配器的构造函数。该问题可能被否决,因为它是不清楚。与其问如何解决一个没有解释的问题,不如试着写下你的问题来解释你试图实现的目标。@akari如果你将对象列表公开(或使其成为访问者),然后在A2到A1中转换上下文并引用此公开成员,这将是可行的。。。(尽管我不建议这样做,因为这是贫血的)在A2.onCreate()do List lo=((A1)上下文)中;实际上,两个活动都使用适配器。它们都显示对象列表,但我希望在Activity1中创建和显示的对象显示在Activity2中,因为对象不是在中创建的Activity2@akari我想说的是,只要在activity2中重新创建对象,很可能不值得为了保存而重新实例化。@akari:“实际上,两个活动都使用适配器”--最多可以使用同一适配器类。它们不能也不应该使用同一适配器实例。”因为对象不是在Activity2中创建的“--无论这些对象是什么,都需要从两个活动中都可以访问,以便它们可以创建自己的适配器。或者,不要使用单独的活动(例如,在一个活动中使用片段)。@akari我使用的是MVC模式,以及每个视图(包括片段)获取其自己的视图模型,该模型由其各自的控制器初始化和填充。我从不在视图之间共享引用,它们是自己的实体并获取自己的对象/集合/引用,这将使您的代码更加模块化。好的,我将按照您建议的Commonware在Activity2中创建对象
public class CommonAdapter : ArrayAdapter<AttachmentDetails>
{
    private readonly List<AttachmentDetails> _attachments;

    public CommonAdapter( Context context, List<AttachmentDetails> attachments )
        : base( context, 0, attachments )
    {       
        _attachments = attachments;
    }

    public override View GetView( int position, View convertView, ViewGroup parent )
    {
        ...
    }
}
_recordAttachmentsGrid.Adapter = new CommonAdapter(this.ApplicationContext, Model.Attachments);