Kotlin Activity'den Fragment'a veri taşımak

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:

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:
Yanlış anlamayın biliyorum ama öyle tek seferde doğru cevabı bulacak kadar değil :).Bir deneyiniz olmazsa başka yollarada bakalım :)
Sıkıntı yok bende çok yeniyim başka sıkıntılar da yaşadım stackoverflowdan falan çözdüm de bu beni baya zorladı 4 gündür kısmen bakınıyorum ama 1 adım dahi atamadım 😟😔
 
Sıkıntı yok bende çok yeniyim başka sıkıntılar da yaşadım stackoverflowdan falan çözdüm de bu beni bayağı zorladı 4 gündür kısmen bakınıyorum ama 1 adım dahi atamadım 😟😔

Konuya çok boş yazı yazmayalım :).Eğer olmazsa Discord kullanıyor iseniz lütfen bana ulaşınız.
Discord: Kdr8070#6916.
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı