更改用户界面,处理活动和片段的最佳方式

时间:2017-02-22 19:50:55

标签: android android-fragments android-activity

所以我试图将Google地图集成到我的应用程序中,我遇到了一个我并不完全理解的概念。我已经看到将谷歌地图添加到应用程序中,似乎最常见的方法是使用活动。

我发现了一些网站和一个SO问题,展示了如何将谷歌地图放入片段中,但如果用户不断点击个人资料并返回,那会是一个问题吗?导致地图不断重建或恢复。如果地图是一项活动,那么这种表现会更好吗?

基本上,我不确定从活动GUI转换到片段的最佳方法?我有一个只使用1个活动的应用程序,我只使用了多个不同的片段,用这个代码改变它们

FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    Fragment fragment = getFragmentManager().findFragmentById(R.id.framecontainer);
    if (fragment == null) {
        ft.add(R.id.framecontainer, frag, tag);
    } else {
        ft.replace(R.id.framecontainer, frag, tag);
    }
    ft.addToBackStack(null);
    ft.commit();

我很困惑,因为当我创建主要活动时,我打电话给

setContentView(R.layout.baselayout);

这个布局只包含一个框架容器,我会立即添加一个HomeScreenFragment,当我需要更改时,我会使用上面的FragmentTransaction代码。

但是,如果我的新MapActivity使用setContentView(R.layout.maplayout);,我将如何最好地更改屏幕?如果R.id.maplayout不包含framelayout,那么最好是开始一个使用许多片段的新活动,就像我之前提到的那样吗?我记得曾经多次拨打setContentViewonCreate()以外的电话是不好的做法。

似乎我遗漏了一些东西,因为到目前为止似乎有两种方法可以使用不同布局的活动

  1. 每次都开始一项新活动,并尽量减少活动量。
  2. 使用FrameLayout创建活动,每次只交换片段
  3. 解决我的实际问题  我希望我的用户点击地图上标记的其他用户,这些用户会将他们带到profilelayout并查看该用户的个人资料,我应该使用上述两种方法之一,还是应该如何进行?

    你们有没有任何意见指出我的最佳方向?谢谢!

1 个答案:

答案 0 :(得分:0)

如果您当前的应用程序已经碎片重,请考虑使用MapFragment吗?我认为,如果你正确地清理你的对象/资源,它不应该是一个性能问题。

另外根据文档说明了关于MapFragment的以下内容:

  

它是地图视图的包装器,可自动处理必要的生命周期需求。

我认为通过使用LayoutInflater添加/删除视图可以进行布局操作也很不错。