我有一个异步任务,最终创建参数email,about。异步任务位于onCreate方法中,此CustomListAdapter也是如此。我想在onPostExecute
的asyncTask中从onCreate移动CustomListAdapter。我的问题是this
表示应用程序的上下文。当我在onPostExecute
中移动它时,它不再获得该上下文。我尝试用getApplicationContext()
,activityName.this.getApplicationContext
替换它,但它不起作用,因为它期望应用程序的上下文。我找到了这个Static way to get 'Context' on Android?,但由于某些原因我无法在清单中定义名称。我可以在asyncTask的onPostExecute方法中使用哪种获取应用程序上下文的方法?或者我应该以上下文作为参数来制作Asynck任务?
CustomListAdapter adapter=new CustomListAdapter(this, email,about);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
String Slecteditem= email.get(position);
Toast.makeText(getApplicationContext(), Slecteditem, Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:7)
如果您的活动名称是MyActivity,您可以随时使用MyActivity.this获取其上下文
答案 1 :(得分:1)
您可以在Activity
的构造函数中传递CustomAysncTask
组件的上下文,如下面的代码段所示,并使用它。但是要经常检查null
MyActivity activity
public CustomAsycTask(MyActivity activity) {
this.activity=activity;
}
更新:由Tomer Shemesh
指出
private WeakReference<MyActivity> activity = null;
public CustomAsycTask(MyActivity activity) {
activity= new WeakReference<MyActivity>(activity);
}
并访问它:
final MyActivity iActivity = activity.get();