Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使用Dagger和MVP_Android_Kotlin_Nullpointerexception_Dagger 2_Dagger - Fatal编程技术网

如何在android中使用Dagger和MVP

如何在android中使用Dagger和MVP,android,kotlin,nullpointerexception,dagger-2,dagger,Android,Kotlin,Nullpointerexception,Dagger 2,Dagger,我想用Rxjava、Dagger、Kotin和MVP开发一个应用程序 我写了下面的代码,但运行应用程序时会显示nullPointerExecetpion错误。 我知道我的代码错误的nullPointerExeception,但我试图找到我的错误,但我做不到 我的基本片段代码: abstract class BaseFragment : Fragment(), BaseView { var presenter: BasePresenter<*>? = null ab

我想用RxjavaDaggerKotinMVP开发一个应用程序
我写了下面的代码,但运行应用程序时会显示
nullPointerExecetpion
错误。
我知道我的代码错误的
nullPointerExeception
,但我试图找到我的错误,但我做不到

我的基本片段代码:

abstract class BaseFragment : Fragment(), BaseView {

    var presenter: BasePresenter<*>? = null

    abstract fun initializeDagger()
    abstract fun initializePresenter()
    abstract var layoutID: Int

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        val view = inflater.inflate(layoutID, container, false)

        initializeDagger()
        initializePresenter()

        return view

    }

    override fun onDetach() {
        super.onDetach()
        presenter?.onDestroy()
    }
}
class HomeTodayPresenter @Inject constructor(
    val repositoryUseCase: RepositoryUseCase, disposable: CompositeDisposable
) : BasePresenter<HomeTodayView>(disposable) {

    private var todayList = ArrayList<Today>()

    fun onCreate() {
        view?.initRepositoryList(todayList)
        getTodayList()
    }

    fun onTodayRefreshList() {
        getTodayList()
    }

    private fun getTodayList() {
        compositeDisposable.add(
            repositoryUseCase.getAuctionsToday()
                .subscribe({ responseResult ->
                    view?.hideLoader()
                    responseResult?.let { itResponse ->
                        itResponse.res?.let { itRes ->
                            itRes.today?.let { itToday ->
                                if (itToday.size > 0) {
                                    todayList.clear()
                                    todayList.addAll(itToday)
                                    view?.loadRepositoryList()
                                }
                            }
                        }

                    }
                }, { e ->
                    view?.let { itView ->
                        e.message?.let { itErr ->
                            itView.showErrorMessage(itErr)
                        }
                        itView.hideLoader()
                    }
                })
        )
    }
}
class HomeTodayFragment : BaseFragment(), HomeTodayView {

    @Inject
    lateinit var homeTodayPresenter: HomeTodayPresenter
    lateinit var todayAuctionsAdapter: TodayAuctionsAdapter
    lateinit var layoutManager: LinearLayoutManager

    private val swipeRefreshListener = SwipeRefreshLayout.OnRefreshListener {
        homeTodayPresenter.onTodayRefreshList()
    }

    override fun initRepositoryList(list: ArrayList<Today>) {
        layoutManager = LinearLayoutManager(requireContext())
        todayAuctionsAdapter = TodayAuctionsAdapter(list)
        requireContext().initRecyclerView(homeFragToday_list, layoutManager, todayAuctionsAdapter)
    }

    override fun loadRepositoryList() {
        todayAuctionsAdapter.notifyDataSetChanged()
    }

    override fun hideLoader() {
        homeFragToday_loader.visibility = View.GONE
    }

    override fun showErrorMessage(msg: String) {
        Log.e("responseErr", msg)
    }

    override fun initializeDagger() {
        AndroidInjection.inject(requireActivity())
    }

    override fun initializePresenter() {
        super.presenter = homeTodayPresenter
        homeTodayPresenter.view = this
    }

    override var layoutID: Int = R.layout.fragment_home_today

    private lateinit var toolbarTile: TextView
    lateinit var handler: Handler


    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        homeTodayPresenter.onCreate()
        return super.onCreateView(inflater, container, savedInstanceState)

    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        //Initialize
        activity?.let {
            toolbarTile = it.findViewById(R.id.homePage_toolbarTitle)
        }
    }

    override fun setUserVisibleHint(isVisibleToUser: Boolean) {
        super.setUserVisibleHint(isVisibleToUser)
        if (isVisibleToUser) {
            //Initialize
            handler = Handler()
            //Set delay
            handler.postDelayed({
                //Set title
                toolbarTile.text = resources.getString(R.string.today)
                toolbarTile.setTextColor(ResourcesCompat.getColor(resources, R.color.green_active, null))
            }, 10)
        }
    }
}
显示此行的错误:
homeTodayPresenter.onCreate()


如何修复它?

您没有空指针,您有一个
未初始化的PropertyAccessException
,因为字段
homeTodayPresenter
没有正确注入。是您
Jake Wharton
来自谷歌吗?;)@m0skit0,我怎样才能做到?你能帮我把密码发给我吗?请原谅我的朋友,因为我是amateur@HarounHajem“不,我的朋友:)你能帮我吗?@Jakewarton对不起,男人匕首是痛苦的,帮不了你。如果可以,我希望你没有空指针,你有一个
未初始化的PropertyAccessException
,因为字段
homeTodayPresenter
没有正确注入。是你
Jake Wharton
来自谷歌吗?;)@m0skit0,我怎样才能做到?你能帮我把密码发给我吗?请原谅我的朋友,因为我是amateur@HarounHajem“不,我的朋友:)你能帮我吗?@Jakewarton对不起,男人匕首是痛苦的,帮不了你。如果可以,我会的
kotlin.UninitializedPropertyAccessException: lateinit property homeTodayPresenter has not been initialized
    at com.app.applisttestapp.UI.Home.Fragments.Today.HomeTodayFragment.onCreateView(HomeTodayFragment.kt:69)
    at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2539)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:875)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1227)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1293)