如何一起使用 Nav Drawer 和 FragmentActivity
How to use Nav Drawer and FragmentActivity together
该应用程序无法正确构建,因为我认为它正在寻找片段 cruisespeed_Fragment
,这实际上是构建导航抽屉时的 fragmentactivity
。 cruisespeed_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 详细介绍了差异。
该应用程序无法正确构建,因为我认为它正在寻找片段 cruisespeed_Fragment
,这实际上是构建导航抽屉时的 fragmentactivity
。 cruisespeed_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 详细介绍了差异。