【问题标题】:replace current fragment with new one用新片段替换当前片段
【发布时间】:2015-07-01 15:39:59
【问题描述】:

在我的应用程序中,当单击导航抽屉上的不同项目时,我需要在片段之间切换。我为它创建了一个新方法 DisplayFragment。代码如下:

private void DisplayFragment(int position)
{
    Fragment fragment = null;
    switch (position){

        case 0:
            fragment = new Fragment1();
            break;

        case 1:
            fragment = new Fragment2();
            break;

        case 2:
            fragment = new Fragment3();
            break;

        case 3:
            fragment = new Fragment4();
            break;

    if(fragment!= null)
       this.getFragmentManager().beginTransaction().replace(R.id.frame_container,fragment()).commit();

}

它显示错误“上面行中的片段元素如下”错误的第二个参数类型找到了android.support.v4.app.Fragment;需要 android.app.Fragment;"

我尝试将导入从 android.support.v4.app.Fragment 更改为 android.app.Fragment;但它随后显示 Fragment fragment = null 语句的错误。我做错了什么?

【问题讨论】:

  • new fragment() 应该是大写字母 new Fragment() 并且上面的导入应该是 android.support.v4.app.Fragment 在你所有的 Fragment 类中
  • 将代码.replace(R.id.frame_container, new fragment()) 替换为.replace(R.id.frame_container, fragment)。您已经在上面的 switch 语句中调用了“new Fragment()”,现在您需要将其指定为新片段。
  • 如果您觉得我的回答有帮助,请采纳。

标签: android android-fragments


【解决方案1】:

您需要获得支持片段管理器才能使用android.support.v4.app.Fragment

this.getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, fragment).commit();

所以,getSupportFragmentManager() 而不是 getFragmentManager()。此外,在这种情况下,您不需要使用 this

【讨论】:

  • 我试过了,但它显示了无法访问的语句 this.getSupportFragmentManager().beginTransaction().replace(R.id.frame_container,fragment).commit();
  • 你在使用 Fragment Activity 吗? developer.android.com/reference/android/support/v4/app/…
  • 是的,我是。但是,当我将上述语句放在每个 switch 案例中时,我的问题得到了解决。这会让它的工作方式有所不同吗?
  • 请看我上面回答中的那一行,我认为你在你的行中使用了new Fragment(),这意味着你的switch语句不起作用。另外,我确信这条线不会编译,所以我不确定你实际使用的是什么。 this.getFragmentManager().beginTransaction().replace(R.id.frame_container,new fragment()).commit();没有new fragment()这样的东西
猜你喜欢
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多