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库怎么写
时间: 2024-02-15 21:27:53 浏览: 181
MainActivity.java
你的代码中有一个问题,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未初始化时被调用。
阅读全文