Java Android充气异常-ViewPager

Java Android充气异常-ViewPager,java,android,xml,Java,Android,Xml,我正在尝试使用教程在我的应用程序中实现pageviewer。但我的应用程序force关闭了。它显示了android.view.InflateException:Binary-XML文件行#2:Error-inflating class-com.example.viewpager.ScrollView。我错在哪里?我是android的初学者,请指导我。我想我可能导入了错误的库,因为我的应用程序支持API 10。所以我搜索了其他答案,但毫无用处。这是我的密码: maintactivity.java

我正在尝试使用教程在我的应用程序中实现pageviewer。但我的应用程序force关闭了。它显示了
android.view.InflateException:Binary-XML文件行#2:Error-inflating class-com.example.viewpager.ScrollView
。我错在哪里?我是android的初学者,请指导我。我想我可能导入了错误的库,因为我的应用程序支持API 10。所以我搜索了其他答案,但毫无用处。这是我的密码:

maintactivity.java

package com.example.viewpager;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;

public class MainActivity extends FragmentActivity {
/**
 * The number of pages (wizard steps) to show in this demo.
 */
private static final int NUM_PAGES = 5;

/**
 * The pager widget, which handles animation and allows swiping horizontally to access previous
 * and next wizard steps.
 */
private ViewPager mPager;

/**
 * The pager adapter, which provides the pages to the view pager widget.
 */
private PagerAdapter mPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Instantiate a ViewPager and a PagerAdapter.
    mPager = (ViewPager) findViewById(R.id.pager);
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(mPagerAdapter);
}

@Override
public void onBackPressed() {
    if (mPager.getCurrentItem() == 0) {
        // If the user is currently looking at the first step, allow the system to handle the
        // Back button. This calls finish() on this activity and pops the back stack.
        super.onBackPressed();
    } else {
        // Otherwise, select the previous step.
        mPager.setCurrentItem(mPager.getCurrentItem() - 1);
    }
}

/**
 * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in
 * sequence.
 */
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return new ScreenSlidePageFragment();
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }
}
}
ScreenSlidePagerFragment.java

package com.example.viewpager;

import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ScreenSlidePageFragment extends Fragment {

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

    return rootView;
}
}
Activity_main.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
将适配器更改为:

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    int layouts[];
    public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
        layouts=new int[]{R.layout.fragment_slide_screen_page1,R.layout.fragment_slide_screen_page2,R.layout.fragment_slide_screen_page3,R.layout.fragment_slide_screen_page4,R.layout.fragment_slide_screen_page5};
    }

    @Override
    public Fragment getItem(int position) {

        ScreenSlidePageFragment fragment=new ScreenSlidePageFragment();
        fragment.setContent(layouts[position]);
        return fragment;
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }
}
碎片:

public class ScreenSlidePageFragment extends Fragment {
int layout;
public void setContent(int layout){  
   this.layout=layout;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    ViewGroup rootView = (ViewGroup) inflater.inflate(layout, container, false);

    return rootView;
}
}
虽然不确定您希望在每个片段中进行什么更改,但上述要求您创建5个布局XML,您可以在每次创建新片段时进行设置。

即使我遇到了崩溃。 这是因为我调用了mAdapter.notifyDataSetChanged();里面

后来我把方法改为

@Override
        public void onPageSelected(int arg0) {
            mAdapter.notifyDataSetChanged();
        }

因此,这个技巧也显示了这个com.example.viewpager.ScrollView的代码。我没有这样的文件。我从这里复制了这个代码:你需要一个可滚动的文本视图作为查看页面的项目吗?不,我不想要一个可滚动的文本视图。取而代之的是我想要布局,然后尝试删除所有的滚动视图,并在xml中创建一个文本视图
public class ScreenSlidePageFragment extends Fragment {
int layout;
public void setContent(int layout){  
   this.layout=layout;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    ViewGroup rootView = (ViewGroup) inflater.inflate(layout, container, false);

    return rootView;
}
}
 @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {

        }
@Override
        public void onPageSelected(int arg0) {
            mAdapter.notifyDataSetChanged();
        }