viewPager=find(R.id.book_book); myPagerAdapter=new MyPagerAdapter(requireActivity().getSupportFragmentManager(),fragmentList ); viewPager.setAdapter(myPagerAdapter)
时间: 2023-06-16 19:08:19 浏览: 60
这段代码是在 Android Studio 中使用 ViewPager 实现滑动页面的功能。首先,通过 `find()` 方法找到布局文件中定义的 ViewPager 控件,并将其赋值给变量 `viewPager`。然后,创建一个自定义的 PagerAdapter 对象 `myPagerAdapter`,并将 ViewPager 控件和 Fragment 列表传递给它。最后,调用 `setAdapter()` 方法将 PagerAdapter 对象设置为 ViewPager 的适配器,从而实现滑动页面的功能。
相关问题
viewPager = findViewById(R.id.viewPager);的viewpager报错
如果你的 `findViewById(R.id.viewPager)` 报错,有可能是以下几个原因:
1. 没有在 XML 文件中定义 `ViewPager` 控件,或者 ID 名称不正确。请检查你的 XML 文件中是否有一个 `ViewPager` 控件,并且其 ID 是否为 `viewPager`。
2. 没有在 Java 代码中正确导入 `ViewPager` 类。请检查你的 Java 代码中是否有正确的 `import` 语句,例如 `import androidx.viewpager.widget.ViewPager;`。
3. 没有正确设置布局文件。请检查你的布局文件是否正确设置了 `ViewPager` 控件的宽度和高度,以及其他属性。如果你使用的是 `FragmentPagerAdapter` 或 `FragmentStatePagerAdapter`,请确保你的 Fragment 的布局文件中也包含了正确的 `ViewPager` 控件。
希望这些提示能够帮助你解决问题!
public class MainActivity extends AppCompatActivity implements View.OnClickListener { ImageView addCityIv,moreIv; LinearLayout pointLayout; ViewPager mainVp=findViewById(R.id.main_vp);; //ViewPager的数据源 List<Fragment>fragmentList; //表示需要城市的集合 List<String>cityList; //表示ViewPager的页数指示器显示集合 List<ImageView>imgList; private CityFragmentPagerAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addCityIv=findViewById(R.id.main_iv_add); moreIv=findViewById(R.id.main_iv_more); pointLayout=findViewById(R.id.main_layout_point); //添加点击事件 addCityIv.setOnClickListener(this); moreIv.setOnClickListener(this); fragmentList = new ArrayList<>(); cityList=new ArrayList<>(); imgList=new ArrayList<>(); if (cityList.size()==0){ cityList.add("北京"); } //初始化ViewPager页面的方法 initPager(); adapter = new CityFragmentPagerAdapter(getSupportFragmentManager(), fragmentList); mainVp.setAdapter(adapter); //创建小圆点指示器 } private void initPager() { //创建Fragment对象,添加到ViewPager数据源当中 for (int i=0;i<cityList.size();i++){ CityWeatherFragment cwFrag = new CityWeatherFragment(); Bundle bundle = new Bundle(); bundle.putString("city",cityList.get(i)); cwFrag.setArguments(bundle); fragmentList.add(cwFrag); } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.main_iv_add: break; case R.id.main_iv_more: break; } } }用androidx库怎么写
你的代码中有一个问题,ViewPager的初始化应该在onCreate方法中进行,而不是在成员变量声明的位置。以下是使用androidx库的修改后的代码:
```
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
ImageView addCityIv, moreIv;
LinearLayout pointLayout;
ViewPager mainVp;
//ViewPager的数据源
List<Fragment> fragmentList;
//表示需要城市的集合
List<String> cityList;
//表示ViewPager的页数指示器显示集合
List<ImageView> imgList;
private CityFragmentPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addCityIv = findViewById(R.id.main_iv_add);
moreIv = findViewById(R.id.main_iv_more);
pointLayout = findViewById(R.id.main_layout_point);
mainVp = findViewById(R.id.main_vp);
//添加点击事件
addCityIv.setOnClickListener(this);
moreIv.setOnClickListener(this);
fragmentList = new ArrayList<>();
cityList = new ArrayList<>();
imgList = new ArrayList<>();
if (cityList.size() == 0) {
cityList.add("北京");
}
//初始化ViewPager页面的方法
initPager();
adapter = new CityFragmentPagerAdapter(getSupportFragmentManager(), fragmentList);
mainVp.setAdapter(adapter);
//创建小圆点指示器
}
private void initPager() {
//创建Fragment对象,添加到ViewPager数据源当中
for (int i = 0; i < cityList.size(); i++) {
CityWeatherFragment cwFrag = new CityWeatherFragment();
Bundle bundle = new Bundle();
bundle.putString("city", cityList.get(i));
cwFrag.setArguments(bundle);
fragmentList.add(cwFrag);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.main_iv_add:
break;
case R.id.main_iv_more:
break;
}
}
}
```
在这个修改后的代码中,ViewPager的初始化被移动到了onCreate方法中,并使用findViewById方法来获取ViewPager的引用。同时,我还将ViewPager的初始化移到了adapter的初始化之后,以确保adapter不会在ViewPager未初始化时被调用。