【问题标题】:How to start FragmentActivity from onNavigationItemSelected method如何从 onNavigationItemSelected 方法启动 FragmentActivity
【发布时间】:2017-09-01 19:38:54
【问题描述】:

我在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);

我现在应该改变什么,帮帮我

【问题讨论】:

  • @GowthamanM 我想打开 FragmentActivity 而不是 Fragment 所以请阅读问题

标签: android android-fragments android-fragmentactivity navigation-drawer


【解决方案1】:

您正在尝试将FragmentActivity 传递到需要Fragment 的地方,这就是错误所说的。

如果你想打开另一个activity而不是替换fragment,你必须调用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));
}

【讨论】:

  • 我想用MyFragmentActivity替换FrameLayout
  • 不可能在另一个活动中打开一个活动。您将不得不在后台堆栈中再添加一个,因此只能使用startActivity
  • 为了澄清/理解,请阅读 Android 的 Fragment & Activity 文档。
猜你喜欢
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多