Member 14883729 Ответов: 1

Невозможно добавить несколько макетов во фрагмент


Я работал над приложением, где люди могли смотреть такие видео, как tik tok. Сначала я сделал это с помощью recyclerview, а позже понял, что мне следует использовать вертикальный Viewpager. Затем я использовал Viewpager2, но столкнулся с некоторыми проблемами, поэтому заменил его на viewpager1. Но все равно это не работает. Я делаю это в своем фрагменте. Я хочу воспроизводить видео из firebase в вертикальном viewpager с помощью videoview. В Viewpager_Adapter вы можете видеть, что я вызвал еще один макет, который является viewer_page, но когда я запускаю свое приложение, я не получаю этот макет в своем фрагменте.

ViewpagerAdapter

class ViewpagerAdapter(var context: Context) : PagerAdapter() {
    lateinit var inflater: LayoutInflater
    var contentDTOs: ArrayList<ContentDTOs> = arrayListOf()

    var contentUidList: ArrayList<String> = arrayListOf()

    override fun isViewFromObject(view: View, `object`: Any): Boolean {
        return view == `object` as ConstraintLayout
    }

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
        container.removeView(`object`as ConstraintLayout)
    }

    override fun instantiateItem(container: ViewGroup, position: Int): Any {
        inflater = context.getSystemService(container.context.toString())as LayoutInflater
        val view =inflater.inflate(R.layout.viewer_page,container,false)
        val exo : View? = view?.findViewById(R.id.videoviews)

        val path = Uri.parse(contentDTOs[position].videourl)
        val views = view.findViewById<VideoView>(R.id.videoviews)
        views.setVideoURI(path)
        views.requestFocus()
        views.setOnPreparedListener {
            views.start()
        }
        container.addView(view)
        return view
    }

    override fun getCount(): Int {
        return contentDTOs.size
    }
}


Watch_video_fragment


@SuppressLint("ResourceAsColor")
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val fragmentview = inflater.inflate(R.layout.fragment_watch_video, container, false)
        fragmentview.videofragment?.setOnClickListener {
            var fragment = Watch_video()
            activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.frag, fragment)
                ?.commit()

        }
        fragmentview.memefragment?.setOnClickListener {
            var fragment = DetailViewFragment()
            activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.frag, fragment)
                ?.commit()

        }


        firestore = FirebaseFirestore.getInstance()
        uid = FirebaseAuth.getInstance().currentUser?.uid

        fragmentview.videofragment?.setOnClickListener {
            var fragment = Watch_video()
            activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.frag, fragment)
                ?.commit()

        }
//


        fragmentview.vertical_viewpager.adapter = ViewpagerAdapter(requireContext())
        fragmentview.vertical_viewpager.setPageTransformer(false
        ) { page, position ->
            page.rotationY = position * -30 // animation style... change as you want..
        }


Что я уже пробовал:

Я пытаюсь вызвать 2 макета во фрагменте с помощью адаптера

1 Ответов

Рейтинг:
1

Richard MacCutchan

Вы уже разместили этот вопрос на сайте https://www.codeproject.com/Questions/5284495/Vertical-viewpager-not-working-in-kotlin-android[^Пожалуйста, не делайте репостов.


Member 14883729

Но я не получаю ответа и мне срочно нужно завершить свой проект

Richard MacCutchan

Это не повод повторять один и тот же вопрос. Если у вас есть дополнительная информация для добавления, пожалуйста, используйте Улучшить вопрос ссылка в оригинале и добавить его туда.