MainActivity не реализует интерфейс Dagger.hilt.internal.GeneratedComponent или интерфейс Dagger.hilt.Internal.GeneratedAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 MainActivity не реализует интерфейс Dagger.hilt.internal.GeneratedComponent или интерфейс Dagger.hilt.Internal.Generated

Сообщение Anonymous »

Я учусь использовать JetPack Compose, и я пытался следовать учебному пособию, чтобы создать покедекс с помощью рукояти и MVVM, все шло хорошо, пока я не попытался реализовать ViewModel, когда я вводил его и попытался запустить приложение , Я получил ошибку заголовка (данный класс держателя компонентов com.example.pokedex.mainactivity не реализует интерфейс dagger.hilt.internal.generatedcomponent или интерфейс Dagger.hilt.Internal.GeneratedComponentManager ), я уже пробовал несколько решений из Форум изменяет способ введения его, но ни один из них не сработал для меня. Strong> < /p>
@HiltAndroidApp
class PokedexApplication : Application() {
override fun onCreate() {
super.onCreate()
Timber.plant(Timber.DebugTree())
}
}

mainActivity
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
PokedexTheme {
val navController = rememberNavController()
NavHost(navController = navController,
startDestination = "pokemon_list_screen"
) {
composable("pokemon_list_screen") {
PokemonListScreen(navController = navController)
}
composable(
"pokemon_detail_screen/{dominantColor}/{pokemonName}",
arguments = listOf(
navArgument("dominantColor") {
type = NavType.IntType
},
navArgument("pokemonName") {
type = NavType.StringType
}
)) {
val dominantColor = remember {
val color = it.arguments?.getInt("dominantColor")
color?.let { Color(it) } ?: Color.White
}
val pokemonName = remember {
it.arguments?.getString("pokemonName")

}
}
}
}
}
}
}

appmodule
@Module
@InstallIn(SingletonComponent::class)
object AppModule {

@Singleton
@Provides
fun providePokemonRepository(
api: PokeApi
) = PokemonRepository(api)

@Singleton
@Provides
fun providePokeApi(): PokeApi {
return Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.build()
.create(PokeApi::class.java)
}
}

Repository
@ActivityScoped
class PokemonRepository @Inject constructor (
private val api: PokeApi
) {

suspend fun getPokemonList(limit: Int, offset: Int): Resource
{
val response = try {
api.getPokemonList(limit, offset)
} catch (e: Exception) {
return Resource.Error(e.message.toString())
}
return Resource.Success(response)
}
}

Композитный, где я называю ViewModel
@Composable
fun PokemonList(
navController: NavController,
viewModel: PokemonListViewModel = hiltViewModel()
) {

val pokemonList by remember { viewModel.pokemonList }
val endReached by remember { viewModel.endReached }
val loadError by remember { viewModel.loadError }
val isLoading by remember { viewModel.isLoading }

LazyColumn(contentPadding = PaddingValues(16.dp)) {
val itemCount = if(pokemonList.size % 2 == 0) pokemonList.size / 2 else pokemonList.size / 2 + 1

items(itemCount) {
if (it >= itemCount - 1 && !endReached){
viewModel.loadPokemonPaginated()
}
PokedexRow(rowIndex = it, entries = pokemonList, navController = navController)
}
}
}

viewmodel (только первый код)
@HiltViewModel
class PokemonListViewModel @Inject constructor(
private val repository: PokemonRepository
) : ViewModel() {

private var curPage = 0

var pokemonList = mutableStateOf(listOf())
var loadError = mutableStateOf("")
var isLoading = mutableStateOf(false)
var endReached = mutableStateOf(false)

init {
loadPokemonPaginated()
}

compose версия: 1.1.1
kotlin version 1.6.10
зависимости < /strong> < /p>
implementation 'androidx.core:core-ktx:1.7.0'
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1'
implementation 'androidx.activity:activity-compose:1.4.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"

implementation("com.google.dagger:hilt-android:2.41")
kapt("com.google.dagger:hilt-android-compiler:2.38.1")

// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation "com.squareup.okhttp3:okhttp:4.9.3"
implementation "com.squareup.okhttp3:logging-interceptor:4.9.0"

// Timber
implementation 'com.jakewharton.timber:timber:4.7.1'

// Coroutines
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0'

// Coroutine Lifecycle Scopes
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.4.1"

// Coil
implementation "io.coil-kt:coil:1.3.2"
implementation "com.google.accompanist:accompanist-coil:0.7.0"

//Dagger - Hilt
implementation 'com.google.dagger:hilt-android:2.41'
kapt 'com.google.dagger:hilt-compiler:2.41'
kapt "androidx.hilt:hilt-compiler:1.0.0"
implementation 'androidx.hilt:hilt-navigation-compose:1.0.0'

//Navigation
implementation "androidx.navigation:navigation-compose:2.4.2"

//Palette
implementation "androidx.palette:palette:1.0.0"


Подробнее здесь: https://stackoverflow.com/questions/718 ... edcomponen
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»