如何从 onNavigationItemSelected 方法启动 FragmentActivity

How to start FragmentActivity from onNavigationItemSelected method

我使用以下片段在 onNavigationItemSelected 方法中用 Fragment 替换 FrameLayout

public boolean onNavigationItemSelected(MenuItem item) {
     int id = item.getItemId();
     Fragment fragment;

     if (id == R.id.nav_camara) {
         fragment = new MyFragment();
         FragmentTransaction ft = getFragmentManager().beginTransaction();
         ft.replace(R.id.mainFrame, fragment);
         ft.commit();
     }
     else if (id == R.id.nav_gallery) {

     }
     else if (id == R.id.nav_slideshow) {

     }
     else if (id == R.id.nav_manage) {

     } else if (id == R.id.nav_share) {

     } else if (id == R.id.nav_send) {

     }
}

我想用FragmentActivity替换FrameLayout,然后我做了

FragmentActivity fragmentAc;

 if (id == R.id.nav_camara) {
     fragmentAc= new MyFragmentActivity();
     FragmentTransaction ft = getFragmentManager().beginTransaction();
     ft.replace(R.id.mainFrame, fragmentAc);
     ft.commit();
 }

Wrong 2nd argument type. Found: 'android.support.v4.app.FragmentActivity', required: 'android.app.Fragment' 在线 ft.replace(R.id.mainFrame, fragmentAc);

我现在应该怎么改,帮帮我

您正试图在需要 Fragment 的地方传递 FragmentActivity,这就是错误提示。

如果你想打开另一个 activity 而不是替换片段,你必须调用 startActivity(...)

替换:

if (id == R.id.nav_camara) {
     fragmentAc= new MyFragmentActivity();
     FragmentTransaction ft = getFragmentManager().beginTransaction();
     ft.replace(R.id.mainFrame, fragmentAc);
     ft.commit();
 }

与:

if (id == R.id.nav_camara) {
    startActivity(new Intent(getActivity(), MyFragmentActivity.class));
}