静态fragment好 还是动态添加好

 我来答
匿名用户
2016-06-17
展开全部
  首先,我认为值得一提的是......
  "你不能替换静态定义的布局文件中的一个片段。您仅可替换你动态地添加通过 FragmentTransaction 的片段"
  请参阅
  Android: 不能替换另一个的一个片段
  如何显示一个选项卡内的一个新片段?
  这里是解决方案。
  在 home_activity.xml,你应该离开空你 tabcontent。
  <FrameLayout
  android:id="@+id/tabcontent"
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:layout_weight="1" />
  您的 Home_Activity
  private FragmentTabHost mHost;

  public void changeFragment() {
  FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
  EntertainmentFragment enFragment = new EntertainmentFragment();
  ft.replace(R.id.tabcontent, enFragment);
  ft.commit();
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
  mHost.setup(this, getSupportFragmentManager(), R.id.tabcontent);
  mHost.addTab(mHost.newTabSpec("School")
  .setIndicator("School"), SchoolFragment.class, null);
  mHost.addTab(mHost.newTabSpec("Sport")
  .setIndicator("Sport"), SportsFragment.class, null);
  }
  在您的 onIemClick (Sports_Fragment),添加这
  MainActivity mainAct = (MainActivity)getActivity();
  mainAct.changeFragment();
  我充分的项目,基于您的代码,是在这里。
  我还没有机会真的检查 TabHost 为什么不工作时我测试您的代码。但FragmentTabHost的作品对我很好。
  编辑: 若要修复重叠问题,您可以设置 OnTabChangeListener:
  mHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {

  @Override
  public void onTabChanged(String tabId) {
  // TODO Auto-generated method stub
  if (tabId.equalsIgnoreCase("School")) {
  Log.v(TAG, "school");
  FragmentTransaction ft = getSupportFragmentManager()
  .beginTransaction();
  schoolFrag = new SchoolFragment();
  ft.replace(R.id.tabcontent, schoolFrag);
  ft.commit();
  }
  if (tabId.equalsIgnoreCase("Sport")) {
  Log.v(TAG, "Sport");
  FragmentTransaction ft = getSupportFragmentManager()
  .beginTransaction();
  SportsFragment sportFrag = new SportsFragment();
  ft.replace(R.id.tabcontent, sportFrag);
  ft.commit();
  }
  }

  });
  关于 backpress,您可以尝试
  ft.addToBackStack(null);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式