java – MainActivity.this不是一个封闭的类AsyncTask
|
我试图第一次创建一个AsyncTask,但我没有太多的运气. 我的AsyncTask需要从服务器获取一些信息,然后将新的布局添加到主布局以显示此信息. 一切似乎或多或少是清楚的,但是错误信息“MainActivity不是封闭的类”是困扰我的. 没有人似乎有这个问题,所以我想我很想念一些很明显的东西,我只是不知道是什么. 此外,我不知道我是否使用正确的方式获取上下文,并且因为我的应用程序不编译,所以我无法测试它. 您的帮助非常感激. 这是我的代码: public class BackgroundWorker extends AsyncTask<Context,String,ArrayList<Card>>
{
Context ApplicationContext;
@Override
protected ArrayList<Card> doInBackground(Context... contexts)
{
this.ApplicationContext = contexts[0];//Is it this right way to get the context?
SomeClass someClass = new SomeClass();
return someClass.getCards();
}
/**
* Updates the GUI before the operation started
*/
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
/**
* Updates the GUI after operation has been completed
*/
protected void onPostExecute(ArrayList<Card> cards)
{
super.onPostExecute(cards);
int counter = 0;
for(Card card : cards)// Amount of "cards" can be different each time
{
//Create new view
LayoutInflater inflater = (LayoutInflater) ApplicationContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewSwitcher view = (ViewSwitcher)inflater.inflate(R.layout.card_layout,null);
ImageButton imageButton = (ImageButton)view.findViewById(R.id.card_button_edit_nickname);
/**
* A lot of irrelevant operations here
*/
// I'm getting the error message below
LinearLayout insertPoint = (LinearLayout)MainActivity.this.findViewById(R.id.main);
insertPoint.addView(view,counter++,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));
}
}
}
解决方法Eclipse可能是对的,您正在尝试从另一个属于自己的文件(BackgroundWorker)的类中访问它自己的文件内的类(MainActivity).没有办法做到这一点 – 一个课堂应该如何神奇地知道对方的实例?你可以做什么:>移动AsyncTask,因此它是MainActivity中的一个inner类 使用构造函数示例: public class BackgroundWorker extends AsyncTask<Context,ArrayList<Card>>
{
Context ApplicationContext;
Activity mActivity;
public BackgroundWorker (Activity activity)
{
super();
mActivity = activity;
}
//rest of code...
至于
没事. (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
