android-architecture-components相关内容
对于一个新的应用程序,我使用 Jetpack 导航库来实现正确的返回导航.第一级导航是导航抽屉,如文档中所述,它可以与喷气背包导航配合使用.但是还有另一个层次的导航是用 ViewPager 和 TabLayout 实现的.TabLayout 切换的片段包含额外的线性导航层次结构.但是,Jetpack Navigation 似乎不支持 ViewPager/TabLayout.必须实现 Fragmen
..
我有一个带有 BottomNavigationView 和 ViewPager 的应用程序.如何使用新的“导航架构组件"来实现它? 最佳实践是什么? 非常感谢 解决方案 UPDATE (15/06/21): 从Navigation组件版本开始2.4.0-alpha01 开箱即用地支持多个后堆栈.根据文档,如果您将 NavigationView 或 BottomNaviga
..
新的 LiveData 可以是在某些场景中用作替代 RxJava 的 observables.但是,与 Observable 不同的是,LiveData 没有错误回调. 我的问题是:我应该如何处理 LiveData 中的错误,例如当它由某些由于 IOException 而无法检索的网络资源支持时? 解决方案 在 Google 的其中一个
..
最近我正在探索谷歌最近推出的 Android 架构.从 文档 我发现了这个: public class MyViewModel extends ViewModel {private MutableLiveData>用户;public LiveData>获取用户(){如果(用户 == 空){users = new MutableLiveData>();加载用户();}回访用户;}私有无效负载用户(
..
viewpager 对导航有什么用处吗?我找不到关于此的信息,我不明白如何做到这一点. 我有一个简单的两个片段,需要放在 viewpager 中,如果可能的话,可以通过导航. 解决方案 根据 这个问题: 导航侧重于影响后退堆栈的元素,而标签不影响后退堆栈 - 您应该继续使用 ViewPager 和 TabLayout
..
我试图在新的导航组件中找到一个方法,但我没有找到任何关于它的方法. 我有当前目的地: mainHostFragment.findNavController().currentDestination 但我无法获得对显示片段的任何引用. 解决方案 引用显示的片段(AndroidX): Java public Fragment getForegroundFragment(){片
..
当使用 androidx.fragment.app.FragmentContainerView 作为导航主机而不是常规的 fragment 时,应用无法在方向更改后导航到目的地. 我收到以下错误:java.lang.IllegalStateException: 没有当前导航节点 是否有我应该知道的正确使用它的问题,或者我使用导航组件的方式不正确? 带有视图的简单活动xml: .
..
如何使用 Room Persistence Library 删除特定表上的所有条目?我需要删除表,但找不到如何执行此操作的任何信息. 仅当数据库正在迁移或加载所有条目并删除它们时:) 解决方案 您可以创建一个 DAO 方法来执行此操作. @Dao接口 MyDao {@Query("从 myTableName 中删除")public void nukeTable();}
..
我对LiveData的理解是,它会在数据的当前状态变化上触发观察者,而不是数据的一系列历史状态变化. 目前,我有一个MainFragment,它执行Room写操作,将非垃圾数据更改为垃圾数据. 我还有另一个TrashFragment,它观察垃圾数据. 考虑以下场景. 目前有 0 个已删除的数据. MainFragment 是当前的活动片段.TrashFragment 尚未
..
我没有得到在 Android 中使用 RxJava 和在 Android 架构组件中使用 LiveData 的理由.如果用例和两者之间的差异以及以代码形式解释之间差异的示例示例一起解释,那将非常有帮助两者兼而有之. 解决方案 Android LiveData 是原始观察者模式的变体,增加了活动/非活动转换.因此,它的范围非常有限. 使用 Android LiveData 中描述的示例
..
我正在尝试使用 Android 架构组件编写一个示例应用程序,但即使尝试了几天,我也无法让它工作.它给了我上述例外. 生命周期所有者:- public class MainActivity extends LifecycleActivity {public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstan
..
我正在关注 this 文档以了解 LiveData 和 ViewModel.在文档中,ViewModel 类具有构造函数, public class UserModel extends ViewModel {私有 MutableLiveData用户;@Inject UserModel(MutableLiveData用户){this.user = 用户;}公共无效初始化(){如果(this.use
..
看起来 MutableLiveData 与 LiveData 的区别仅在于创建了 setValue() 和 postValue() 方法公开,而在 LiveData 中,它们受到保护. 为什么要为此更改创建一个单独的类,而不是简单地在 LiveData 本身中将这些方法定义为公共方法? 一般来说,这种继承形式(增加某些方法的可见性是唯一的变化)是一种众所周知的做法吗?它在哪些场景中可能
..
Android Jetpack Navigation、BottomNavigationView 在返回按钮点击时具有自动片段返回堆栈? 我想要的是,在用户一个接一个地选择多个标签后,用户点击后退按钮应用程序必须重定向到他/她打开的最后一页. 我使用 Android ViewPager 实现了相同的效果,方法是将当前选定的项目保存在 ArrayList 中.Android Jetpack
..
我试图在下面的代码中找出为什么在我用新数据填充数据库后 Room 的 LiveData observable 没有给我新的变化. 这是放在我的活动的 onCreate 方法上: shiftsViewModel = ViewModelProviders.of(this).get(ShiftsViewModel.class);移动视图模型.getShifts().observe(this, t
..
假设我想在两个实体 Foo 和 Bar 之间做一个 INNER JOIN: @Query("SELECT * FROM Foo INNER JOIN Bar ON Foo.bar = Bar.id")列表findAllFooAndBar(); 是否可以强制使用这样的返回类型? 公共类 FooAndBar {福福;吧台;} 当我尝试这样做时,我收到此错误: 错误:无法弄清楚如何从游标读取
..
我如何表示“多对多"?与房间的关系?我的列名也一样. 例如我有 Guest 和 Reservation.Reservation 可以有多个 Guest,一个 Guest 可以是多个 Reservation 的一部分. 这是我的实体定义: @Entity 数据类 Reservation(@PrimaryKey 有效 ID:长,val 表:字符串,val 客人:List)@Entity
..
随着 Android 架构组件库的引入,引入了几个新类,包括 AndroidViewModel 和 ViewModel.但是,我无法弄清楚这两个类之间的区别.文档 简洁地将 AndroidViewModel 描述为如下: 应用上下文感知ViewModel 我很欣赏简洁,但这到底意味着什么?我们什么时候应该选择使用 AndroidViewModel 而不是 ViewModel,反之亦然?
..
我正在将一个项目转换为 Kotlin 并且我正在尝试将我的模型(这也是我的实体)变成一个数据类我打算使用 Moshi 来转换来自 API 的 JSON 响应 @Entity(tableName = "movies")数据类 MovieKt(@首要的关键变量 id : Int,var 标题:字符串,变量概述:字符串,varposter_path:字符串,var background_path:字符
..
是否可以防止 LiveData 在开始观察时接收到最后一个值?我正在考虑使用 LiveData 作为事件. 例如显示消息、导航事件或对话触发器等事件,类似于EventBus. ViewModel 和fragment 之间的通信问题,Google 给了我们LiveData 来更新view 的数据,但是这种类型的通信不适合我们需要更新的时候单个事件只查看一次,我们也不能在 ViewMode
..