2016-04-09 31 views
3

私はマテリアルデザインタブビューを作成しています。私はメインアクティビティでaddFragmentメソッドの後にエラーが発生します。これは私が得ているエラーです。Android - 間違った第1引数型と 'android.supportv4.app.Fragment'

Wrong 1st argument type. Found: 'com.example.sa.tabproject.LatestPromoFragment, ' android.supportv4.app.Fragment' 

マイMainActivity.java

import android.app.Activity; 
import android.support.design.widget.TabLayout; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.support.v7.widget.Toolbar; 
import android.app.Fragment; 

public class MainActivity extends AppCompatActivity { 
Toolbar toolbar; 
TabLayout tabLayout; 
ViewPager viewPager; 
ViewPagerAdapter viewPagerAdapter; 

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

    toolbar=(Toolbar)findViewById(R.id.toolBar); 
    setSupportActionBar(toolbar); 

    tabLayout=(TabLayout)findViewById(R.id.tab_layout); 

    viewPager = (ViewPager) findViewById(R.id.viewPager); 

    viewPagerAdapter= new ViewPagerAdapter(getSupportFragmentManager()); 


    viewPagerAdapter.addFragment(new LatestPromoFragment(),"Latest Promos"); 
    viewPagerAdapter.addFragment(new MapViewFragment(),"Map View"); 
    viewPager.setAdapter(viewPagerAdapter); 
    tabLayout.setupWithViewPager(viewPager); 

}} 

ViewPagerAdapter.java

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import java.util.ArrayList; 
import java.util.List; 

public class ViewPagerAdapter extends FragmentPagerAdapter { 
ArrayList<Fragment> fragment = new ArrayList<>(); 
ArrayList<String> tabTitles= new ArrayList<>(); 


public void addFragment(Fragment fragment,String titles){ 
    this.fragment.add(fragment); 
    this.tabTitles.add(titles); 

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

} 

@Override 
public Fragment getItem(int position) { 
    return fragment.get(position); 
} 

@Override 
public int getCount() { 
    return fragment.size(); 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return tabTitles.get(position); 
}} 

私はMainActivity.javaに、いくつかの断片クラスをインポートしました。しかし、それはエラーを解決しません。

答えて

2

これは、アダプタクラスでサポートフラグメント、つまりimport android.support.v4.app.Fragmentを使用しているためです。 Activityクラスでは、あなたはappの断片を使っていますimport android.app.Fragment;

は、動作するたびに同じタイプのフラグメントを使用します。

+0

@DanielNugent指摘してくれてありがとう、私は答えを編集します:) – dex

1

android.support.v4.app.FragmentPagerAdapterを使用する場合は、すべてのフラグメントにandroid.support.v4.app.Fragmentも使用する必要があります。

FragmentPagerAdapterまたはFragmentStatePagerAdapterを持つandroid.app.Fragmentネイティブフラグメントを使用する場合は、アダプタのv13サポートライブラリバージョン(android.support.v13.app.FragmentPagerAdapter)を使用する必要があります。

あなたはそれぞれのためのgetItem()を見ればあなたが文書でこれを見ることができます:

V4: http://developer.android.com/intl/en/reference/android/support/v4/app/FragmentPagerAdapter.html#getItem(int)

V13:あなたのimport android.app.Fragment;コードに置き換え http://developer.android.com/intl/en/reference/android/support/v13/app/FragmentPagerAdapter.html#getItem(int)

+0

素敵な説明をありがとうございました。できます。 – coderaizer

0

import android.support.v4.app.Fragment; 
関連する問題