2017-11-16 6 views
0

Android StudioでViewPagerを作成しようとしました。 は、私はエラーを取得する:ここでPagerAdapter()をandroid.appに適用できませんFragmentManager

PagerAdapter() cannot be applied to android.app FragmentManager 
ラインで

super(fm);

は、アダプタの私のコードです。私は何かを変更する必要がありますか?

package com.example.admin.usthweather; 

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.PagerAdapter; 
import android.view.View; 

/** 
* Created by Admin on 11/15/2017. 
*/ 

public class HomeFragmentAdapter extends PagerAdapter { 
    private final int PAGE_COUNT = 3; 
    private String titles[] = new String[] {"Hanoi","Paris", "Saigon"}; 

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

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

    // Override 
    public Fragment getItem(int page) { 
// returns an instance of Fragment corresponding to the specified page 
    Fragment frag=null; 
    switch (page){ 
     case 0: 
     frag=new Hanoi(); 
     break; 
     case 1: 
     frag=new Paris(); 
     break; 
     case 2: 
     frag=new Saigon(); 
     break; 
    } 
    return frag; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
    return false; 
    } 
} 

答えて

0

super(fm);が間違っています。したがって、これのどれも必要ありません:

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

しかし、私はあなたがPagerAdapterをサブクラス化したくなかったと思われるが、またはFragmentStatePagerAdapterのいずれか。 docsとして言う:

Base class providing the adapter to populate pages inside of a ViewPager. You will most likely want to use a more specific implementation of this, such as FragmentPagerAdapter or FragmentStatePagerAdapter.

Instead of providing a View recycling mechanism directly ViewPager uses callbacks to indicate the steps taken during an update.

0

パラメータとしてFragmentManagerとPagerAdapterには、コンストラクタはありません。コードはFragmentPagerAdapterまたはFragmentStatePagerAdapterと似ていますので、そのうちの1つを使用できます。

public class HomeFragmentAdapter extends FragmentStatePagerAdapter { 

    private final int PAGE_COUNT = 3; 
    private String titles[] = new String[] {"Hanoi","Paris", "Saigon"}; 

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

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

    @Override 
    public Fragment getItem(int page) { 
    Fragment frag=null; 
    switch (page){ 
     case 0: 
     frag=new Hanoi(); 
     break; 
     case 1: 
     frag=new Paris(); 
     break; 
     case 2: 
     frag=new Saigon(); 
     break; 
    } 
    return frag; 
    } 
} 

サポートライブラリからFragmentFragmentManagerの正しいインポートファイルを使用することを忘れないでください:

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
それはこのようなものになります
関連する問題