Enes Seval
Kilopat
- Katılım
- 3 Haziran 2017
- Mesajlar
- 76
Daha fazla
- Cinsiyet
- Erkek
İnternetten film verileri çekip gösterdiğim bir uygulama yapmaya çalışıyorum. Uygulama açıldığında mainactivity içerisinde moviesfragment adında bir fragmentta filmleri listeliyorum, navigation drawer ile de filtreleme işlemi yapmak istiyorum. Amacım navigation drawerdaki butona basıldığında verileri fragmenta göndermek oradan da viewmodel üzerinden verileri filtreleyerek yeniden çekmek. Kodlarımı ve aldığım hatayı ekliyorum.
Mainactivity:
Moviesfragment.
Logcat çıktısı:
Mainactivity:
Kod:
val navRight : NavigationView = findViewById(R.id.nav_right)
(navRight.menu.findItem(R.id.filtBut).actionView as Button).run {
this.setOnClickListener {
MoviesFragment().filterMovie(filtQuality,filtGenre,filtRate,filtYear,filtLang)
}
}
Moviesfragment.
Kod:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
activity?.setTitle(R.string.movies)
viewModel = ViewModelProviders.of(this).get(MoviesViewModel::class.java)
viewModel.refreshData(sortMethod)
movieList.layoutManager = LinearLayoutManager(context)
movieList.adapter = movieAdapter.
swipeRefreshLayout.setOnRefreshListener {
movieList.visibility = View.GONE.
movieError.visibility = View.GONE.
movieLoading.visibility = View.GONE.
viewModel.refreshData(sortMethod)
swipeRefreshLayout.isRefreshing = false.
}
}
fun filterMovie(quality : String, genre : String, rate : String, year : String, lang : String){
viewModel.filterMovie(quality, genre, rate, year, lang)
}
Logcat çıktısı:
Kod:
2020-06-10 23:29:46.474 18721-18721/com.enesseval.moviedeneme E/AndroidRuntime: FATAL EXCEPTION: main.
Process: com.enesseval.moviedeneme, PID: 18721.
kotlin.UninitializedPropertyAccessException: lateinit property viewModel has not been initialized.
at com.enesseval.moviedeneme.view.MoviesFragment.filterMovie(MoviesFragment.kt:110)
at com.enesseval.moviedeneme.view.MainActivity$onCreate$$inlined$run$lambda$6.onClick(MainActivity.kt:87)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2020-06-10 23:29:46.488 18721-18721/com.enesseval.moviedeneme I/Process: Sending signal. PID: 18721 SIG: 9
Son düzenleyen: Moderatör: