如何一起使用 Nav Drawer 和 FragmentActivity

How to use Nav Drawer and FragmentActivity together

该应用程序无法正确构建,因为我认为它正在寻找片段 cruisespeed_Fragment,这实际上是构建导航抽屉时的 fragmentactivitycruisespeed_Fragment 是片段 activity 的原因是它是一个选项卡式布局,我使用 this 教程将其放在一起。

MainActivity.java中:

@Override
public void onNavigationDrawerItemSelected(int position) {

    Fragment objFragment = null;

    switch (position) {
        case 0:
            objFragment = new project_Fragment();
            break;
        case 1:
            objFragment = new cruisespeed_Fragment();
                break;
        case 2:
            objFragment = new satflow_Fragment();
            break;
        case 3:
            objFragment = new network_Fragment();
            break;
        }
    // update the main content by replacing fragments
    FragmentManager fragmentManager = getFragmentManager();
    fragmentManager.beginTransaction()
            .replace(R.id.container, objFragment)
            .commit();
}

And in cruisespeed_Fragment.java:

public class cruisespeed_Fragment extends FragmentActivity implements ActionBar.TabListener {

private ViewPager viewPager;
private CSPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = {"Top Rated", "Games", "Movies"};

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

    // Initilization
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new CSPagerAdapter(getFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }
}

我得到的错误是 Error:(62, 31) error: incompatible types required: Fragment found: cruisespeed_Fragment

出于某种原因 logcat 目前没有输出任何内容,但是一旦我再次排序,我会更新。

FragmentActivity 扩展 Activity 而不是 Fragment 你需要让你的 _Fragment() 类 从某种形式的 Fragment[=14= 扩展]

如果不亲自测试您的代码,我很难下定论,但我的理解是 FragmentActivity 是一个 Activity 用于托管 android.support.v4.app.Fragment,而不是 [=14] =]

因此,您将无法使用以下代码启动 FragmentActivity:

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
        .replace(R.id.container, objFragment)
        .commit();

您将需要使用 Intent。另外,请确保您没有不小心将支持 Fragments 与常规 Fragments 混在一起。 This post 详细介绍了差异。