-1

Je suis bloqué sur ce problème. Je veux un tabhost à l'intérieur de mon onglet "swipe". Ceci est mon MainActivity.javaErreur: (63, 29) erreur: types incompatibles: TwoFragment ne peut pas être converti en fragment

import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 

import java.util.ArrayList; 
import java.util.List; 

public class MainActivity extends AppCompatActivity { 

private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 
private int[] tabIcons = { 
     R.drawable.ic_home_black_24dp, 
     R.drawable.ic_subway_black_24dp, 
     R.drawable.ic_hotel_black_24dp, 
     R.drawable.ic_culture, 
     R.drawable.ic_attach_money_black_24dp, 
     R.drawable.ic_food, 
     R.drawable.ic_photo 
}; 

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

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

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

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

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 

    setupTabIcons(); 
} 

private void setupTabIcons() { 
    tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
    tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
    tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
    tabLayout.getTabAt(3).setIcon(tabIcons[3]); 
    tabLayout.getTabAt(4).setIcon(tabIcons[4]); 
    tabLayout.getTabAt(5).setIcon(tabIcons[5]); 
    tabLayout.getTabAt(6).setIcon(tabIcons[6]); 

} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new OneFragment(), "Home"); 
    adapter.addFragment(new TwoFragment(), "How TO Go"); 
    adapter.addFragment(new ThreeFragment(), "Hotels"); 
    adapter.addFragment(new FourFragment(), "Cultures"); 
    adapter.addFragment(new FiveFragment(), "Costs"); 
    adapter.addFragment(new SixFragment(), "Food & Tradition"); 
    adapter.addFragment(new SevenFragment(), "Photos"); 

    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

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

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

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

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

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

et voici mon TwoFragment.java

import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentActivity; 
    import android.support.v4.app.FragmentTabHost; 


public class TwoFragment extends FragmentActivity { 
private FragmentTabHost mTabHost; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.tab_2); 
    mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); 
    mTabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent); 

    mTabHost.addTab(
      mTabHost.newTabSpec("tab1").setIndicator("Tab 1", null), 
      FragmentTab.class, null); 
    mTabHost.addTab(
      mTabHost.newTabSpec("tab1").setIndicator("Tab 1", null), 
      FragmentTab.class, null); 
    mTabHost.addTab(
      mTabHost.newTabSpec("tab1").setIndicator("Tab 1", null), 
      FragmentTab.class, null); 
} 
} 

Maintenant, le problème est mon MainActivity.java me donne cette erreur:

Error:(63, 29) error: incompatible types: TwoFragment cannot be    converted to Fragment 

Mon xml est ok et comment se débarrasser de ce problème.

+0

'TwoFragment' n'est pas une sous-classe' Fragment' – Blackbelt

+0

alors comment le résoudre? –

+0

l'étendre avec fragment au lieu de fragmentactivity –

Répondre

0

remplacer mTabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent);

avec

mTabHost.setup(TwoFragment.this, getSupportFragmentManager(), R.id.tabcontent);

et essayer peut-être travailler pour vous.

+0

Dit le frère mais ne fonctionnait pas .............. –