Hak*_*baş 7 android android-activity dagger-hilt
我在 crashlytics 中遇到了以下崩溃,但无法重现问题。没有我可以用来追踪的异常解释:
dagger.hilt.internal.Preconditions.checkState (Preconditions.java:83)
com.xxx.xxx.ui.base.Hilt_BaseFragment.onAttach (Hilt_BaseFragment.java:46)
androidx.fragment.app.Fragment.onAttach (Fragment.java:1783)
com.xxx.xxx.ui.base.Hilt_BaseFragment.onAttach (Hilt_BaseFragment.java:36)
androidx.fragment.app.Fragment.performAttach (Fragment.java:2922)
androidx.fragment.app.FragmentStateManager.attach (FragmentStateManager.java:464)
Run Code Online (Sandbox Code Playgroud)
在BaseFragment中,有一些注入的对象。
@AndroidEntryPoint
abstract class BaseFragment : FragmentForLifeCycles() {
@Inject
lateinit var injectedClass: InjectedClass
}
Run Code Online (Sandbox Code Playgroud)
没有保留的片段(我的意思是片段没有 setRetainInstance(true) )
在一些从 BaseFragment 派生的片段中,根据该片段注入的需要,是否使用 @AndroidEntryPoint 进行注释。
这是生成的hilt类(Hilt_BaseFragment.java)onAttach块,其中发生了错误;
@Override
@CallSuper
@MainThread
public void onAttach(Activity activity) {
super.onAttach(activity);
Preconditions.checkState(componentContext == null || FragmentComponentManager.findActivity(componentContext) == activity, "onAttach called multiple times with different Context! Hilt Fragments should not be retained.");
initializeComponentContext();
inject();
}
Run Code Online (Sandbox Code Playgroud)
我有类似的问题。所以我正在回答以防有人需要解决方案。
\n您没有发布片段消费者活动代码或完整片段代码。我将展示我的解决方案代码部分。
\n就我而言,我有以下代码:
\n ////\ncompanion object {\n const val TAG = "AnotherFragment"\n\n var instance: AnotherFragment? = null\n\n fun oneInstance(): AnotherFragment{\n if (instance == null)\n instance = AnotherFragment()\n return instance!!\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n注意:不要多次使用该实例。如果您在父片段的 onCreate 中使用此实例,并且应用程序进入后台并返回到父片段,它将被多次调用并给出错误提示。
\n解决方案是每次都创建一个新实例。
\n关于消费者片段:
\n//do it like:\nval anotherFrament = AnotherFrament() // \xe2\x9c\x94\xef\xb8\x8f this solved my issue\n\n// do not do it like this:\n val anotherFrament = AnotherFrament.oneInstance() // \xe2\x9a\xa0\xef\xb8\x8f\xe2\x9d\x8c\n\n//if data consistency issue appears or something else, handle with lifecycle events.\nRun Code Online (Sandbox Code Playgroud)\n我希望能帮助某人。
\n| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |