我正在创建一个从Tmdb Api获取电影列表的应用程序。 我的代码是主要的活动是如何从另一个java类创建MainActivity的内部类的AsyncTask对象
public class MainActivityFragment extends Fragment {
public class FetchImageTask extends AsyncTask<...>{
//
}
}
而且我还有一个适配器类
public class MovieAdapter extends ArrayAdapter<MovieImage> {
private static int page_nmber = 1;
public MovieAdapter(Context context, List<MovieImage> objects) {
super(context, 0 , objects);
}
final String LOG_TAG = MovieAdapter.class.getSimpleName();
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(getCount() == position + 5){
//Log.v(LOG_TAG, " last two images");
}
MovieImage movieImage = getItem(position);
View rootView = LayoutInflater.from(getContext())
.inflate(R.layout.list_item_movie, parent, false);
ImageView imageView = (ImageView) rootView.findViewById(R.id.list_item_movie_image);
Picasso.with(getContext()).load(movieImage.getImage_path())
.placeholder(R.drawable.loading)
.fit()
.into(imageView);
return rootView;
}
public void fetchExtraImages(){
MainActivityFragment.FetchImageTask fetchImageTask;
fetchImageTask = new MainActivityFragment.FetchImageTask();
//Gives me error saying this is not an enclosing class
}
其实我想创建FetchImageTask对象的另一个对象,然后调用下一个页面(第2页) 结果和追加导致各自的适配器。
任何帮助表示赞赏。 :)
可能像'MainActivityFragment objMainActivityFragment = new MainActivityFragment(); fetchImageTask = objMainActivityFragment.new FetchImageTask()' –
'AsyncTask'不一定是内部类才行。您可以使用回调在其自己的单独的类文件中拥有'AsyncTask',但要在任何地方发布其结果。 – NoChinDeluxe
看到这篇文章[这里](http://stackoverflow.com/questions/4070716/instantiating-inner-class)已经回答你的问题,如果你真的想让你的AsyncTask成为一个嵌套类,考虑将其声明为静态。 – alxscms