在Android中怎样实现ViewPager+Activity,就是实现页面之间的滑动切换,而且每个Activity都编写了Java代码
直接给你贴代码吧,有什么问题再问我
ArrayList<View> list = new ArrayList<View>();
Intent intent1 = new Intent(this, t1Activity.class);
list.add(getView("t1", intent1));
Intent intent2 = new Intent(this, t2Activity.class);
list.add(getView("t2", intent2));
Intent intent3 = new Intent(this, t3Activity.class);
list.add(getView("t3", intent3));
Intent intent4 = new Intent(this, t4Activity.class);
list.add(getView("t4", intent4));
viewpage.setAdapter(new MyPagerAdapter(list));
viewpage.setCurrentItem(currentPage);
viewpage.setOnPageChangeListener(new MyOnPageChangeListener());
如果要实现页面之间的滑动切换,比较好的实现方式 是ViewPager+Fragment。外层是Activity,就像是某些新闻阅读app首页一样可以左右滑动查看一样
final Window w = mLocalActivityManager.startActivity(
mTag, mIntent);
final View wd = w != null ? w.getDecorView() : null;
public class ViewPagerActivity2 extends AppCompatActivity {
private List views=new ArrayList<>();
private LocalActivityManager manager;
private ViewPager vp_view_page_image;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
vp_view_page_image = (ViewPager) findViewById(R.id.vp_view_page_image);
manager = new LocalActivityManager((Activity) this,true);
manager.dispatchCreate(savedInstanceState);
Intent intentItem = new Intent(getApplicationContext(),ItemActivity.class);
//views.add(manager.startActivity("ItemActivity",intentItem).getDecorView());
Intent intentExpandable =new Intent(getApplicationContext(),ExpandableActivity.class);
//views.add(manager.startActivity("ExpandableActivity",intentExpandable).getDecorView());
views.add(activityToView(this,intentItem));//这一行报错
views.add(activityToView(this,intentExpandable));
vp_view_page_image.setAdapter(new MyAdapter());
}
@Override
protected void onPause() {
super.onPause();
manager.dispatchPause(isFinishing());
}
@Override
protected void onResume() {
super.onResume();
manager.dispatchResume();
}
public View activityToView(Context parent,Intent intent){
Window w= manager.startActivity(parent.getClass().getName(),intent);//这一行报错
View wd = w !=null ? w.getDecorView() :null;
if(wd!=null){
wd.setVisibility(View.VISIBLE);
wd.setFocusableInTouchMode(true);
((ViewGroup)wd).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
}
return wd;
}
class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v=views.get(position);
container.addView(v);
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View v=views.get(position);
container.removeView(v);
}
}
}
请大神指出代码的错误,错误的两行已经在注释中写出
已经解决了,是因为没有在AndroidManifests文件中配置Activity