我在片段活动类中有一个像这样的hashmaps的arraylist。这是在OnCreate方法中。
try {
pp = new Parser(getQuery());
productData = pp.getData(asynctask, getQuery());
Log.v("data size:", ""+productData.size()+"");
} catch (URISyntaxException e) {
e.printStackTrace();
}
public ArrayList<HashMap<String, String>> getProductData()
{
return this.productData;
}
这里工作正常,数据加载正确。并且变量productData被声明为public。
这是我的片段适配器类:
public class ProductViewPagerAdapter extends FragmentPagerAdapter {
ProductViewActivity productViewActivity = new ProductViewActivity();;
public ProductViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
int temp = productViewActivity.getProductData().size();
Log.v("size:",""+temp+"");
Fragment fragment = new ProductViewFragment();
Bundle args = new Bundle();
args.putInt(ProductViewFragment.ARG_SECTION_NUMBER, i + 1);
fragment.setArguments(args);
return fragment;
}
这里大小给出0.这最终出现在Null指针异常中。这里的问题在哪里?
答案 0 :(得分:0)
这是你的问题:
ProductViewActivity productViewActivity = new ProductViewActivity();
您需要在instance
ProductViewPagerAdapter
public ProductViewPagerAdapter(FragmentManager fm, ProductViewPagerAdapter activity) {
super(fm);
mActivity = activity;
}
或者使用setter函数显式设置它。
public void setActivity( ProductViewPagerAdapter activity) {
mActivity = activity;
}
然后改变
int temp = productViewActivity.getProductData().size();
要:
int temp = mActivity.getProductData().size();
希望这有帮助