无法通过引用访问方法

时间:2016-08-08 16:30:11

标签: java android android-viewpager

当我直接在PagerAdapter创建时访问该方法时,我有getViewAtPosition()方法。当我尝试使用参考时,我不能。我可以通过参考来获得acecces吗?

我可以:  1enter image description here

我不能:   2enter image description here

public class CardapioRU extends Fragment {

private ViewPager mPager;
private PagerAdapter mPagerAdapter;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.view_pager_ru, container, false);

    mPager = (ViewPager) rootView.findViewById(R.id.pager);
    mPagerAdapter = new PagerAdapterRU(inflater);
    mPager.setAdapter(mPagerAdapter);
    return rootView;
}

}

public class PagerAdapterRU extends PagerAdapter {

private View domingo = null;
private View segunda = null;

@SuppressLint("InflateParams")
public PagerAdapterRU(LayoutInflater inflater) {
    domingo = inflater.inflate(R.layout.ru_domingo, null);
    segunda = inflater.inflate(R.layout.ru_segunda, null);
}

public View getViewAtPosition(int position) {
    View view = null;
    if (position == 0) {
        view = domingo;
    }
    if (position == 1) {
        view = segunda;
    }
    ;
    return view;
};

@Override
public Object instantiateItem(View collection, int position) {
    View view = getViewAtPosition(position);
    ((ViewPager) collection).addView(view, 0);
    return view;
}

@Override
public int getCount() {
    return 2;
}

1 个答案:

答案 0 :(得分:2)

getViewAtPosition()PagerAdapterRU的方法。

在第一个屏幕截图中,您直接在PagerAdapterRU个实例上调用方法,但在第二个屏幕截图中,您将在PagerAdapter上调用该方法。

您初始化它的方式并不重要,您已将其声明为PagerAdapter,因此您可以访问PagerAdapter的方法。< / p>

要访问子类的方法,请使用子类的类型声明它。

更改以下内容:

private PagerAdapter mPagerAdapter;

对此:

private PagerAdapterRU mPagerAdapter;

您可以getViewAtPosition()致电mPagerAdapter