2

お願いします、問題を解決できますか?

私は pagerStrips を使用するアプリケーションを実行しており、ブログで次のコードを読みました。

(簡単に言うと、 ごとpageStripに異なるフラグメントを使用します。この場合、3 つの異なるストリップがあるため、3 つの異なるレイアウトがあります)。

package com.tabs;

import java.util.List;
import java.util.Vector;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.view.View;

public class Testi extends FragmentActivity {

// list contains fragments to instantiate in the viewpager
  List<Fragment> fragments = new Vector<Fragment>();
  List<String> fragmentTitles = new Vector<String>();
  // page adapter between fragment list and view pager
  private PagerAdapter mPagerAdapter;
  // view pager
  private ViewPager mViewPager;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        getSupportFragmentManager();
        // creating fragments and adding to list
        fragments.add(Fragment.instantiate(this, Page1Fragment.class.getName()));
        fragmentTitles.add(Page1Fragment.class.getSimpleName());
        fragments.add(Fragment.instantiate(this, Page2Fragment.class.getName()));
        fragmentTitles.add(Page2Fragment.class.getSimpleName());
        fragments.add(Fragment.instantiate(this, Page3Fragment.class.getName()));
        fragmentTitles.add(Page3Fragment.class.getSimpleName());

        this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(),     fragments, fragmentTitles);

        mViewPager = (ViewPager) findViewById(R.id.pager);
        View pagerStrip = findViewById(R.id.pagerTabStrip);
        if (pagerStrip instanceof PagerTabStrip) {
                PagerTabStrip pagerTabStrip = (PagerTabStrip) pagerStrip;
                pagerTabStrip.setDrawFullUnderline(true);
                pagerTabStrip.setTabIndicatorColorResource(android.R.color.black);
                // pagerTabStrip.setTextColor(color.white);
        } else if (pagerStrip instanceof PagerTitleStrip) {
                PagerTitleStrip pagerTitleStrip = (PagerTitleStrip) pagerStrip;
                pagerTitleStrip.setTextColor(getResources().getColor(android.R.color.white));
        }

        mViewPager.setAdapter(this.mPagerAdapter);
        mViewPager.setCurrentItem(0);
   }

}

しかし、エラーが発生します: " Cannot instantiate the type PagerAdapter"

this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments, fragmentTitles);.

助けてくれますか?

私の悪い英語でごめんなさい:D

4

3 に答える 3

1

PagerAdapterabstract class– インスタンス化できません。代わりに を作成しnew class that inherits from PagerAdapterて使用する必要があります。

したがって、たとえば PagerAdapter は次のようになります

   public abstract class PagerAdapter extends FragmentPagerAdapter {

   // fragments to instantiate in the viewpager
   private List<Fragment> fragments;

   // constructor
   public PagerAdapter(FragmentManager fm,List<Fragment> fragments) {
      super(fm);
      this.fragments = fragments;
   }

   // return access to fragment from position, required override
   @Override
   public Fragment getItem(int position) {
      return this.fragments.get(position);
   }

   // number of fragments in list, required override
   @Override
   public int getCount() {
      return this.fragments.size();
   }

}

注: インポートPagerAdapterは自分で行う必要があります。そうではありませんimport android.support.v4.view.PagerAdapter

于 2015-10-08T15:43:36.027 に答える
0

PagerAdapter は、実装する必要がある抽象クラスです。派生クラスで抽象メソッドをインプリメントするか、FragmentPagerAdapter または FragmentStatePagerAdapter などの使用可能なクラスのいずれかを使用します。

于 2013-12-05T18:41:06.520 に答える