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

时间:2014-06-18 12:59:55

标签: android android-activity android-context

我想得到另一个我创建对象的活动的Context(一个包含我需要在第二个活动中显示的对象列表的适配器)。

public class Activity1 extends Activity {

    private Context context = this;

    private GridView gridView;
    private MyAdapter myAdapter;            

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myLayout);

        myAdapter = new MyAdapter(context);

        gridView = (GridView) findViewById(R.id.mylayout2);
        gridView.setAdapter(myAdapter);
}

public class Activity2 extends Activity {

Context context = this;

private MyAdapter myAdapter;
private GridView gridView;

@Override
public void onCreate(Bundle savedInstanceState) {         
   super.onCreate(savedInstanceState);    
   setContentView(R.layout.mylayout3);

   //what I want to do
   cardAdapter = new CardAdapter(manageCardContext); //I want this adapter to be the one in Activity1
   gridView.setAdapter(myAdapter);
}

我该怎么做?

2 个答案:

答案 0 :(得分:2)

  

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

仅在将使用Adapter的活动中创建Adapter,并且仅在该活动中使用Adapter

  

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

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

答案 1 :(得分:0)

与CommonsWare建议类似,我在Activity之外定义了一个公共适配器类,只是在一个类文件中(对不起,这是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 )
    {
        ...
    }
}

并在我需要的地方实例化

_recordAttachmentsGrid.Adapter = new CommonAdapter(this.ApplicationContext, Model.Attachments);