小编amr*_*mrz的帖子

Lateinit 属性 viewModel 尚未初始化

viewModel用这一行进行了初始化,viewModel = (activity as NewsActivity).viewModel但是BreakingNewsFragment收到了以下错误。我该如何解决这个问题?感谢您的帮助

突发新闻片段

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.View
import com.example.simplenewsapp.R
import com.example.simplenewsapp.main.MainViewModel
import com.example.simplenewsapp.NewsActivity
import com.example.simplenewsapp.adapter.NewsRecyclerViewAdapter
import kotlinx.android.synthetic.main.fragment_breaking_news.*


class BreakingNewsFragment : Fragment(R.layout.fragment_breaking_news) {

    lateinit var viewModel: MainViewModel


    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        viewModel = (activity as NewsActivity).viewModel


         ....
Run Code Online (Sandbox Code Playgroud)

新闻活动

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.setupWithNavController
import com.example.simplenewsapp.data.local.ArticleDatabase
import com.example.simplenewsapp.main.MainRepository
import com.example.simplenewsapp.main.MainViewModel
import com.example.simplenewsapp.main.MainViewModelProviderFactory
import kotlinx.android.synthetic.main.activity_news.*

class NewsActivity : AppCompatActivity() {

    lateinit var …
Run Code Online (Sandbox Code Playgroud)

android mvvm android-fragments kotlin android-viewmodel

6
推荐指数
1
解决办法
1万
查看次数

不使用 @Inject 构造函数导航到片段

我正在尝试创建一个简单的新闻应用程序,但是当我@Inject constructor在片段中使用 of 时,导航组件不起作用并显示以下错误...而在使用注入之前,它的工作没有任何问题

我要做什么来修复这个错误?非常感谢你的帮助

新闻活动:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.setupWithNavController
import com.example.simplenewsapp.R
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.android.synthetic.main.activity_news.*

@AndroidEntryPoint
class NewsActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_news)

        bottomNavigationView.setupWithNavController(newsNavHostFragment.findNavController())

    }
}
Run Code Online (Sandbox Code Playgroud)

突发新闻片段:

class BreakingNewsFragment @Inject constructor(
    val newsItemAdapter: NewsAdapter,
    var viewModel: MainViewModel? = null
) : Fragment(R.layout.fragment_breaking_news) {
...
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.simplenewsapp, PID: 8558
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.simplenewsapp/com.example.simplenewsapp.ui.NewsActivity}: android.view.InflateException: Binary XML file line #17: Binary XML …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection android-fragments android-jetpack dagger-hilt

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