2016-04-09 36 views
3

我正在創建Material Design選項卡視圖。我在主活動的addFragment方法後出現錯誤。這是我得到的錯誤。Android - 錯誤的第一個參數類型和'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

這是因爲在適配器類中,您正在使用支持片段,即導入android.support.v4.app.Fragment;並在Activity類中使用app fragment android.app.Fragment;

使用相同類型的片段,每個片段都可以工作。

+0

@DanielNugent感謝您指出我將編輯答案:) – dex

1

如果您使用android.support.v4.app.FragmentPagerAdapter,則還必須對所有片段使用android.support.v4.app.Fragment

如果要使用android.app.Fragment本機碎片與FragmentPagerAdapter或FragmentStatePagerAdapter,則需要使用該適配器的v13支持庫版本,即android.support.v13.app.FragmentPagerAdapter

你可以看到這個文檔中,如果你看的getItem()每個:

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

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

+0

非常感謝您的好解釋。有用。 – coderaizer

0

更換你import android.app.Fragment;代碼

import android.support.v4.app.Fragment; 
相關問題