正在尝试从Dagger到Hilt逐屏迁移。迁移了一个活动,它工作得很好,但大多数应用程序活动使用DialogFraments,并且在为DialogFragment添加注释@AndroidEntryPoint时也可以,但是旧的不迁移的活动不能使用该片段,得到运行时错误:
Hilt Fragments must be attached to an @AndroidEntryPoint Activity. Found: class com......MainActivity
你有什么办法让DialogFragment在希尔特和达格的活动中一起工作吗?
在用@AndroidEntryPoint注释了M
应用程序一旦安装就会崩溃,并抛出上面奇怪的错误。我已经注释了该活动,如下所示,以及它的子片段。 @AndroidEntryPoint
class HomeActivity : AppCompatActivity() {
companion object{
lateinit var currentUser: User
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
我对Hilt非常陌生,我想在Android应用程序中使用它。问题是,在构建过程中,我得到了一个依赖周期,我不太确定如何解决这个问题。
基本思想是我有一个本地数据库,我想将它注入到活动中。我有一个定义工具栏的活动,在那里需要本地DB来执行由工具栏触发的操作,然后我有一个活动扩展了这个活动,我在其中注入了其他东西。
下面是一些代码作为示例:
@Singleton
public class LocalDatabase{
...
}
@Module
@InstallIn(SingletonComponent.class)
public abstract class LocalDatabase
我想知道是否可以在片段或活动之外使用场注入?我知道我可以使用构造函数注入,但是,我想知道是否也可以使用字段注入。我觉得用匕首是有可能的。
当我试图用注入的yclass字段做一些事情时,我得到了这个错误
lateinit property yClass has not been initialized
但它是在我创建的模块中初始化的。
根据文档,我需要使用@AndroidEntryPoint注释来使用字段注入,但在这种情况下,我得到了这个错误:
@AndroidEntryPoint base class must extend ComponentActivity, (support) Fragm
我的应用程序在一些用户的设备上崩溃,只有下面的例外。
Fatal Exception: java.lang.IllegalArgumentException: SavedStateProvider with the given key is already registered
at androidx.savedstate.SavedStateRegistry.registerSavedStateProvider(SavedStateRegistry.java:2)
at androidx.lifecycle.SavedStateHandleController.a
我想在初始化ViewModel时发出API请求。当我在活动中注入s why I make API request inside时,将触发method; expectinginit init‘。我做错了什么?
MainViewModel.kt
@HiltViewModel
class MainViewModel @Inject constructor(private val mainRepository: MainRepo) : ViewModel() {
companion object {
var TAG = "MainViewModel**"
}
init {
我正在尝试将添加到文档中的示例中。
我按照示例创建了一个演示,并将其发布到上。
演示包含3个片段:HomeFragment、ProfileFragment和LoginFragment。在ProfileFragment中,有一个检查用户是否已连接的条件。如果用户未连接,则将其发送到LoginFragment。
ProfileFragment
@AndroidEntryPoint
class ProfileFragment : Fragment(R.layout.fragment_profile) {
private val mainViewModel: MainViewModel by
当我想使用@AndroidEntryPoint时,我会收到以下警告,这是我的项目中的hilt属性。
Expected @AndroidEntryPoint to have a value. Did you forget to apply the Gradle Plugin? (dagger.hilt.android.plugin)
当我试图将id 'dagger.hilt.android.plugin‘添加到我的项目的模块级build.gradle文件时,我会得到以下错误。
org.gradle.api.plugins.UnknownPluginException: Plugin [
我试图在我的项目中使用hilt,它包含了动态特性。我正面临一个错误,我无法完全理解为什么。我遇到了这样的错误:
java.lang.ClassCastException: com.social.analysis.DaggerApp_HiltComponents_ApplicationC$ActivityRetainedCImpl$ActivityCImpl$FragmentCImpl cannot be cast to com.social.login.intro.IntroFragment_GeneratedInjector
at com.social.login.intro.Hil
片段不在单元测试中加载。
代码:
@RunWith(AndroidJUnit4::class)
class DataFeature {
@Test
fun testEventFragment() {
val fragmentArgs = bundleOf("test" to "100")
val scenario = launchFragmentInContainer<DetailFragment>(fragmentArgs)
}
}
错误:
java.lang.Illega