繁体   English   中英

在Android中访问寻呼机适配器类内的活动类变量时出现问题

[英]Issue in accessing activity class variable inside pager adapter class in Android

我在像这样的片段活动类中有一个哈希表的数组列表。 这在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指针异常。 这里的问题在哪里?

那是你的问题:

ProductViewActivity productViewActivity = new ProductViewActivity(); 您需要在ProductViewPagerAdapter的构造函数中传递Activity的instance

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();

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM