[英]Error when invoking a function/method?
For some reason I am getting an error when i invoke the addFrag function/method to populate my fragment and string title. 出于某种原因,当我调用addFrag函数/方法来填充我的片段和字符串标题时,我收到错误。 I am creating a simple
ViewPager
with an adapter. 我正在创建一个带适配器的简单
ViewPager
。 This is all in a fragment by the way. 顺便说一下,这一切都在片段中。 Here is the code:
这是代码:
public class HomeFragment extends Fragment {
private View view;
private ViewPager viewPager;
private TabLayout tabLayout;
private PagerAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup viewGroup,
@Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.home_fragment, viewGroup, false);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
setUpViewPager(viewPager);
tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewPager);
}
});
return view;
}
private void setUpViewPager(ViewPager viewPager) {
adapter = new ViewPagerAdapter(getChildFragmentManager());
adapter.addFrag(new ContentFragment(), "ONE");
adapter.addFrag(new ContentFragment(), "TWO");
adapter.addFrag(new ContentFragment(), "THREE");
viewPager.setAdapter(adapter);
}
}
class ViewPagerAdapter extends FragmentPagerAdapter{
private final List<Fragment> fragmentList = new ArrayList<>();
private final List<String> tabTitles = new ArrayList<>();
//Default Fragment Constructor
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
public void addFrag(Fragment fragment, String title){
fragmentList.add(fragment);
tabTitles.add(title);
}
@Override
public CharSequence getPageTitle(int position){
return tabTitles.get(position);
}
}
When I try to type adapter.addFrag(new ExampleFragment(), "Hello");
当我尝试输入
adapter.addFrag(new ExampleFragment(), "Hello");
I get an error cannot resolve method addFrag. 我得到一个错误无法解析方法addFrag。 Any help will be appreciated.
任何帮助将不胜感激。
adapter
is declared as a PagerAdapter
, not a ViewPagerAdapter
. adapter
被声明为PagerAdapter
,而不是ViewPagerAdapter
。 Therefore the only methods you can use on adapter
are the ones defined for PagerAdapter
. 因此,您可以在
adapter
上使用的唯一方法是为PagerAdapter
定义的PagerAdapter
。 The compiler doesn't know that adapter
will actually be a ViewPagerAdapter
at that point--I can tell that it will, because I saw the assignment adapter = new ViewPagerAdapter(...)
up above, but the compiler isn't allowed to notice that (those are the rules of the language). 编译器当时不知道该
adapter
实际上是一个ViewPagerAdapter
- 我可以告诉它,因为我在上面看到了赋值adapter = new ViewPagerAdapter(...)
,但编译器不允许注意(那些是语言的规则)。 Instead: 代替:
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());
Use viewPagerAdapter
to call your addFrag
methods, and eventually assign adapter = viewPagerAdapter;
使用
viewPagerAdapter
调用addFrag
方法,最后分配adapter = viewPagerAdapter;
. 。
Change private PagerAdapter adapter;
更改
private PagerAdapter adapter;
to private ViewPagerAdapter adapter;
private ViewPagerAdapter adapter;
OR 要么
Type cast adapter to ViewPagerAdapter
and then call addFlag
将转换适配器键入
ViewPagerAdapter
,然后调用addFlag
((ViewPagerAdapter)adapter).addFlag(new ContentFragment(), "ONE");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.