相关疑难解决方法(0)

如果没有 @Provides 注释的方法,则无法提供该类

我想将依赖项(HomeViewModel)注入到我的片段(HomeFragment)中。

我有一个类(HomeViewModelImpl),它实现了该抽象(HomeViewModel),并且在这个类中,我当然会重写父级的方法。

抽象类(HomeViewModel )是从BaseViewModel扩展而来的抽象类。

BaseViewModel是一个普通的类open它是从Android生命周期组件的ViewModel类扩展而来的。

HomeViewModel问题是当我想注入片段时出现错误:

> error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] com.example.mvvm.ui.home.HomeViewModel cannot be provided without an @Provides-annotated method.
public abstract interface AppComponent extends dagger.android.AndroidInjector<com.example.mvvm.MyApplication> {
            ^
  com.example.mvvm.ui.home.HomeViewModel is injected at
      com.example.mvvm.ui.home.HomeFragment.viewModel
  com.example.mvvm.ui.home.HomeFragment is injected at
      dagger.android.AndroidInjector.inject(T)
Run Code Online (Sandbox Code Playgroud)

主页片段

class HomeFragment : BaseFragment() {
//Error comes from this line
@Inject
lateinit var viewModel: HomeViewModel
}
Run Code Online (Sandbox Code Playgroud)

主页视图模型

//If I write @Inject annotation here, …
Run Code Online (Sandbox Code Playgroud)

android abstract-class kotlin dagger-2

5
推荐指数
1
解决办法
6741
查看次数

Java - 强制实现已实现的方法

我有三个课我遇到问题.它们被命名为:GameScene,StageScene,StageOne.我的问题是我想在StageScene中实现初始化,但仍然强制StageOne实现它,这样每当有人使用StageOne对象(stageOne.initialize())时,将为StageScene和StageOne运行初始化.任何人都知道如何做到这一点?

public abstract class GameScene 
{
    public abstract void initialize();
}

public abstract class StageScene extends GameScene
{
    public abstract void initialize()
    {
        //Some code
    }
}
public class StageOne extends StageScene
{
    public void initialize()
    {
        //Some code
    }
}
Run Code Online (Sandbox Code Playgroud)

java methods inheritance structure abstract

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