错误:(63,29)错误:不兼容的类型:TwoFragment无法转换为Fragment

时间:2016-04-13 12:11:39

标签: android android-fragments android-tabhost fragment-tab-host

我坚持这个问题。我想在我的滑动选项卡中有一个tabhost。 这是我的MainActivity.java

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);
    }
}
}

这是我的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);
}
}

现在问题是我的MainActivity.java给了我这个错误:

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

我的xml还可以,以及如何摆脱这个问题。

1 个答案:

答案 0 :(得分:0)

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

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

尝试它可能适合你。