NoSuchMethodError: Tidak ada metode virtual yang berisi (I) Z di kelas Landroid / util / SparseArray;
Aug 21 2020
1. Setiap kali saya menggesek gambar berikutnya di aplikasi saya, aplikasi macet dan saya tidak tahu apa yang salah
2. Masalah ini muncul setelah pembaruan ke Android 30 sebelum berfungsi dengan baik
java.lang.NoSuchMethodError: Tidak ada metode virtual yang berisi (I) Z di kelas Landroid / util / SparseArray; atau kelas supernya (deklarasi 'android.util.SparseArray' muncul di /system/framework/framework.jar!classes2.dex)
class PostViewFragment : DialogFragment() {
private var player: SimpleExoPlayer? = null
private lateinit var mediaDataSourceFactory: DataSource.Factory
//var post: FeedNodeModel? = null
private val STORAGE_PERMISSION_CODE = 100
private var post: FeedNodeModel? = null
var currentPos = 0
var registeredFragments = SparseArray<SidecarPagerFragment>()
var isFirstLoad = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NORMAL, R.style.FullScreenDialogStyle)
isCancelable = true
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
/*if (createdView != null) {
return createdView
}*/
val view = inflater.inflate(R.layout.fragment_post_view, container, false)
//post = arguments?.getSerializable("post") as FeedNodeModel?
when (post?.__typename) {
"GraphImage",
"GraphStoryImage" -> {
Picasso.get()
.load(post?.sourceUrl)
.into(view.img_post)
view.img_post.visibility = View.VISIBLE
view.playerView.visibility = View.GONE
view.viewpager.visibility = View.GONE
}
"GraphVideo",
"GraphStoryVideo" -> {
Glide.with(requireContext())
.load(post?.thumbnailUrl)
.into(object : CustomTarget<Drawable>() {
override fun onLoadCleared(p0: Drawable?) {
}
override fun onResourceReady(p0: Drawable, p1: Transition<in Drawable>?) {
initializePlayer(view.playerView,
post?.sourceUrl)
}
})
view.img_post.visibility = View.GONE
view.playerView.visibility = View.VISIBLE
view.viewpager.visibility = View.GONE
}
"GraphSidecar" -> {
val calHeight =
(resources.displayMetrics.widthPixels *
(post?.feedNodeModel?.get(0)?.dimenHeight!!)) /
post?.feedNodeModel?.get(0)?.dimenWidth!!
view.txt_pager_count.text = "1/${post?.feedNodeModel?.size}" view.viewpager.layoutParams.height = calHeight view.viewpager.adapter = object : FragmentPagerAdapter(childFragmentManager, FragmentStatePagerAdapter.POSITION_NONE) { override fun getItem(p0: Int): Fragment { val fragment = SidecarPagerFragment.create(post?.feedNodeModel?.get(p0)) registeredFragments.put(p0, fragment) if (isFirstLoad) { fragment.isFirstLoad = true isFirstLoad = false } return fragment } override fun getCount(): Int = post?.feedNodeModel?.size!! } view.viewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { } @RequiresApi(Build.VERSION_CODES.R) override fun onPageSelected(position: Int) { if (post?.feedNodeModel?.get(currentPos)?.__typename == "GraphVideo") { registeredFragments[currentPos]?.onPause() } currentPos = position view.txt_pager_count.text = "${currentPos+1}/${post?.feedNodeModel?.size}"
if (registeredFragments.contains(position)) {
registeredFragments[position]?.loadVideo()
}
}
})
view.viewpager.visibility = View.VISIBLE
view.img_post.visibility = View.GONE
view.playerView.visibility = View.GONE
}
}
App Crash On This Line
if (registeredFragments.contains(position)) {
registeredFragments[position]?.loadVideo()
}
Jawaban
2 NickPampoukidis Sep 15 2020 at 16:24
Menggunakan containsKey
/** Returns true if the collection contains [key]. */
inline fun <T> SparseArray<T>.containsKey(key: Int) = indexOfKey(key) >= 0
Wawasan oleh pemimpin tim saya Mike
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat