小编pau*_*nku的帖子

使用Jetpack的Android导航组件销毁/重新创建的片段

我正在尝试在现有应用程序中使用Jetpack的体系结构组件实现导航

我有一个活动应用程序,其中主要片段(ListFragment)是项目列表。当前,当用户点击列表项时,通过会将第二个片段添加到堆栈中fragmentTransaction.add(R.id.main, detailFragment)。因此,当按下后盖时,DetailFragment会分离,然后ListFragment再次显示。

使用导航架构,这是自动处理的。而不是添加新的片段,而是替换了片段,因此片段视图被销毁,onDestroyView()onCreateView()在按下back来重新创建视图时被调用。

我知道这是与LiveDataViewModel一起使用的一种很好的模式,可以避免使用过多的内存,但是在我的情况下,这很烦人,因为该列表的布局很复杂,夸大了时间和CPU的消耗,还因为我需要保存列表的滚动位置并再次滚动到用户离开片段的相同位置。有可能,但似乎应该存在一个更好的方法。

我试图将视图保存在片段的私有字段中,onCreateView()如果已经存在,请重新使用它,但这似乎是一种反模式。

private View view = null;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    if (view == null) {
        view = inflater.inflate(R.layout.fragment_list, container, false);
        //...
    }

    return view;
}
Run Code Online (Sandbox Code Playgroud)

还有其他更优雅的方法来避免重新布局吗?

android android-fragments android-jetpack android-architecture-navigation android-jetpack-navigation

25
推荐指数
3
解决办法
3673
查看次数

如何在Android中的Realm Migration上的新类上添加现有对象

我有一个用于生产的应用程序,因此必须使用 RealmMigration

我看了文档和此示例,但没有找到以下方法。

在当前版本中,我有类型的项目,Fooboolean属性称为favorite。现在,我想对此进行概括并创建用户自定义Foo列表,以便用户能够创建其自定义列表并添加所需数量的对象。我想用一个名为UserFooListbasic name和a RealmList<Foo>的新类来实现这一点。

在迁移过程中,我将使用其字段创建此新类。

这很容易,但是困难之处在于:

我想将Foo标记有以前的所有项目添加favorite到新项目UserFooList,然后删除现在未使用Foo的字段favorite


一些代码可以帮助阐明:

当前课程

public class Foo extends RealmObject{

    private String title;
    private boolean favorite;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public boolean isFavorite() {
        return favorite;
    }

    public void setFavorite(boolean favorite) {
        this.favorite = favorite;
    }
}
Run Code Online (Sandbox Code Playgroud)

班级变更

public …
Run Code Online (Sandbox Code Playgroud)

android realm realm-migration

4
推荐指数
1
解决办法
1302
查看次数