android - 无法在 Activity 中使用 viewpager 创建 fragment 。

标签 android android-fragments android-viewpager

我需要使用 Fragment 添加一个 ViewPager 到我扩展 TabActivity 的主要 Activity 的一部分。 为此,我创建了一个 ViewPagerActivity 类,它扩展了 FragmentActivity ,从这里它添加了调用 FragmentAdapter 来创建 Fragment,其中包含我要创建的 View 。 但我面临的问题是我无法让我的主类在我的主要 Activity 中创建 viewpager。

我认为问题是当我在我的主类上调用类 ViewPagerActivity 时,它无法创建 fragment 来创建 viewpager.

请帮助我已经坚持了将近一个月,我尝试的每个解决方案都失败了。 这些代码在单独的项目中单独实现时运行完美,但在我的项目中实现时似乎无法执行。

ViewPagerActivity 类

class ViewPagerClass extends FragmentActivity implements OnClickListener
    {
            TestFragmentAdapter mAdapter;
            ViewPager mviewpager;
            CirclePageIndicator mIndicator;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
                mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
                mviewpager = new ViewPager(getApplicationContext());
                mviewpager.setId(R.id.viewPager);
                mviewpager.setAdapter(mAdapter);
                mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
                mIndicator.setViewPager(mviewpager);
            }
            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
            }
        }

测试 fragment 适配器.java

class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
    protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test"};
    protected static final int[] ICONS = new int[] {};
    private int mCount = CONTENT.length;

    public TestFragmentAdapter(FragmentManager fm) {
         super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
    }

    @Override
    public int getCount() {
        return mCount;
    }

    @Override
    public CharSequence getPageTitle(int position) {
      return TestFragmentAdapter.CONTENT[position % CONTENT.length];
    }

    @Override
    public int getIconResId(int index) {
      return ICONS[index % ICONS.length];
    }

    public void setCount(int count) {
        if (count > 0 && count <= 10) {
            mCount = count;
            notifyDataSetChanged();
        }
    }

测试 fragment .java

public final class TestFragment extends Fragment {
    private static final String KEY_CONTENT = "TestFragment:Content";
    static TestFragment fragment = new TestFragment();
    public static TestFragment newInstance(String content) {
        StringBuilder builder = new StringBuilder();
        builder.append(content).append("\n");
        fragment.mContent = builder.toString();
        return fragment;
    }
    private String mContent = "???";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {

            mContent = savedInstanceState.getString(KEY_CONTENT);
        }
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.pagerframe, container);
        LayoutParams textparam = new LayoutParams(130,40);
        TestView text = new TextView(getActivity());
        text.setText(mContent);
        text.setTextColor(Color.WHITE);
        LinearLayout layout = (LinearLayout) view.findViewById(R.id.pager_ll);
        layout.setBackgroundColor(Color.BLUE);
        layout.setVisibility(View.VISIBLE);
        layout.setGravity(Gravity.CENTER);
        layout.setOrientation(LinearLayout.VERTICAL);

        layout.addView(text,textparam);
        return layout;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(KEY_CONTENT, mContent);
        }
}

最佳答案

您忘记了设置您的内容 View ,因此在初始化您的 ViewPager 之后设置您的内容 View ,因为 View pager 是您的内容 View

setContentView(mviewpager);

关于android - 无法在 Activity 中使用 viewpager 创建 fragment 。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14851562/

相关文章:

android - PagerTabStrip 未显示在面向 Android 6.X (N) 的应用程序的 ViewPager 中

java - 无法实例化 ViewPagerIndicator CirclePageIndicator

android - 使用 Glide 和 SimpleTarget 将图像随机加载到 View 寻呼机中

Android Studio java.lang.NoClassDefFoundError 启动

android - 如何设置 Artifact 库根名称

Android和使用sqlite的两点之间的距离

java - 在java中将日期字符串转换为毫秒

android - 在每个滑动 fragment 中使用不同的操作栏项目滑动 View

android - 保存 fragment 状态或保存文件并从中更新 - Android

android - fragment 中 ListView 上的按钮单击监听器