【问题标题】:replace Fragment & add Fragment in android在android中替换Fragment并添加Fragment
【发布时间】:2015-03-25 10:50:57
【问题描述】:

我在 android 4.0.4

上使用此代码将片段替换为另一个片段
FragmentManager manager;
manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
 Fragment1 f1=new Fragment1();
 Fragment2 f2=new Fragment2();
public void replace_one(View v)
    {
        Fragment1 f1=(Fragment1)manager.findFragmentByTag("f1");
        transaction.remove(f1);             
        transaction.replace(R.id.place,f2,"f2");
        transaction.commit();
}

此代码有效,但对于 android 4.4.2 不起作用 而对于 android 4.1.2 它正在起作用

如果我使用此代码:

   FragmentManager manager;
    manager=getFragmentManager();
    FragmentTransaction transaction=manager.beginTransaction();
     Fragment1 f1=new Fragment1();
     Fragment2 f2=new Fragment2();
    public void replace_one(View v)
        {
            Fragment1 f1=(Fragment1)manager.findFragmentByTag("f1");
            transaction.remove(f1);             
            transaction.add(R.id.place,f2,"f2");
            transaction.commit();
    }

此代码适用于 android 4.4.2,但适用于 android 4.0.4 不起作用,适用于 android 4.1.2工作

怎么了??

【问题讨论】:

  • 它在 logcat 中。
  • 什么是工作?您的预期行为是什么?您收到的行为是什么?
  • 我的意思是:fragment1 隐藏和 fragment2 显示
  • 我使用了 import android.app.Fragment
  • 我读到了这个声明:如果你想让你的应用使用 Fragment,并且想要针对 API 11 之前的设备,你必须使用 android.support.v4.app.Fragment。但是,如果您只针对运行 API 11 或更高版本的设备,则可以使用 android.app.Fragment。

标签: android fragment


【解决方案1】:

添加或替换片段的方法如下:

   //TO add your fragment
    SomeFragment fragment = SomeFragment.getInstance()//If you have made your fragment singleton.
    getFragmentManager().beginTransaction().add(YOUR_CONTAINER_ID, YOUR FRAGMENT, YOUR_FRAGMENT_UNIQUE_TAG).addToBackStack(null).commit();

    //TO replace your fragment
    SomeFragment fragment = SomeFragment.getInstance()//If you have made your fragment singleton.
    getFragmentManager().beginTransaction().replace(YOUR_CONTAINER_ID, YOUR FRAGMENT, YOUR_FRAGMENT_UNIQUE_TAG).addToBackStack(null).commit();

然后导入:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

【讨论】:

  • 我创建了12个片段但是导入了android.app.Fragment
猜你喜欢
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多