我正在使用来自应用程序中最新android架构组件的Jetpack导航。在极少数情况下,会发生以下崩溃:
Fatal Exception: java.lang.IllegalStateException: Fragment NewOfferFragment{40b548a} not attached to a context.
at android.support.v4.app.Fragment.requireContext(Fragment.java:609)
at android.support.v4.app.Fragment.getResources(Fragment.java:7673)
at com.abc.xyz.offer.owner.fragment.NewOfferFragment$onActivityCreated$2.onChanged(NewOfferFragment.kt:1089)
at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:282)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at android.arch.lifecycle.Transformations$2$1.onChanged(Transformations.java:145)
at android.arch.lifecycle.MediatorLiveData$Source.onChanged(MediatorLiveData.java:152)
at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:282)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at com.abc.xyz.util.remoteUtils.NetworkBoundResource$fetchFromNetwork$2$2.com.abc.xyz.util.remoteUtils.Resource$Companion.error(NetworkBoundResource.kt:3019)
at android.arch.lifecycle.MediatorLiveData$Source.onChanged(MediatorLiveData.java:152)
at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:121)
at android.arch.lifecycle.LiveData.access$000(LiveData.java:59)
at android.arch.lifecycle.LiveData$ObserverWrapper.shouldBeActive(LiveData.java:416)
at android.arch.lifecycle.LiveData.observeForever(LiveData.java:207)
at android.arch.lifecycle.MediatorLiveData$Source.plug(MediatorLiveData.java:141)
at android.arch.lifecycle.MediatorLiveData.addSource(MediatorLiveData.java:96)
at com.abc.xyz.util.remoteUtils.NetworkBoundResource$fetchFromNetwork$2.onChanged(NetworkBoundResource.kt:1074)
at android.arch.lifecycle.MediatorLiveData$Source.onChanged(MediatorLiveData.java:152)
at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:282)
at android.arch.lifecycle.LiveData$1.run(LiveData.java:87)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at …Run Code Online (Sandbox Code Playgroud) android android-architecture-components android-architecture-navigation
我正在设计一个新闻应用程序,在其中我在 recyclerView 中显示新闻文章。现在单击新闻文章时,我想更改其背景颜色以指示该新闻项目已被阅读。
为此,我首先在阅读新闻时更新与 Firebase 数据库中的新闻文章相对应的状态字段。然后我在我的回收器适配器中检查这个字段的值,如果状态改变了就改变背景。
但是,由于 recyclerView 的适配器是在片段的 onCreateView 中定义的,所以当我按下后退按钮时,更改不会立即发生。而是在重新打开应用程序时发生更改,因为当时调用了 onCreateView。那么如何更新片段的 onResume 中的适配器并相应地更新 recyclerView 呢?
我正在实现一个导航抽屉活动,其中我在导航抽屉中有一个片段(由回收器视图组成)以动态地将项目添加到导航抽屉。
我已经成功地实现了这个概念,但面临一个小问题,即当我点击片段中的任何项目时导航抽屉不会关闭。这是因为我无法从片段访问 DrawerLayout。
那么如何将单击侦听器从我的片段传递到活动以关闭抽屉布局。
谢谢你。
android android-fragments android-activity android-fragmentactivity android-studio