Android fragments 尝试在kotlin中的片段中执行自动图像滑块,但是RunouitThread不工作。有可能的解决方案吗?

Android fragments 尝试在kotlin中的片段中执行自动图像滑块,但是RunouitThread不工作。有可能的解决方案吗?,android-fragments,kotlin,androidimageslider,Android Fragments,Kotlin,Androidimageslider,我正在尝试在kotlin的片段中进行自动图像滑动。 我正在尝试将一个活动转换为片段。但是RunouitThread不在片段中工作。有任何可能的解决方案吗 我还尝试了其他一些东西。但这不是一个可能的解决方案,我可以在片段内部进行图像滑动,但不能进行自动滑动 我的主要活动 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout

我正在尝试在kotlin的片段中进行自动图像滑动。 我正在尝试将一个活动转换为片段。但是RunouitThread不在片段中工作。有任何可能的解决方案吗

我还尝试了其他一些东西。但这不是一个可能的解决方案,我可以在片段内部进行图像滑动,但不能进行自动滑动

我的主要活动

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    <fragment
            android:layout_width="409dp"
            android:layout_height="290dp"
            android:name="com.example.sliderimagemovie.HomeFragment"
            android:id="@+id/fragment"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginBottom="441dp"/>


</android.support.constraint.ConstraintLayout>
slidePagerAdapater.kt


package com.example.sliderimagemovie.Adapter

import android.content.Context
import android.support.v4.view.PagerAdapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import com.example.sliderimagemovie.Model.Slide
import com.example.sliderimagemovie.R

class SlidePagerAdapter:PagerAdapter {


    var mContext: Context?=null
    var mList:List<Slide>?=null

    constructor(context: Context, list:List<Slide>)
    {
        mContext=context
        mList=list
    }

    override fun instantiateItem(container: ViewGroup, position: Int): Any {

        var inflater:LayoutInflater= mContext!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater

        var slideLayout:View =inflater.inflate(R.layout.slide_item,null)

        var slideImage:ImageView =slideLayout.findViewById(R.id.slide_image)
        var slideText:TextView=slideLayout.findViewById(R.id.movie_title)
        slideImage.setImageResource(mList!!.get(position).image)
        slideText.setText(mList!!.get(position).title)
        container.addView(slideLayout)

        //return super.instantiateItem(container, position)
        return slideLayout

    }

    override fun isViewFromObject(p0: View, p1: Any): Boolean {
        return p0 == p1
    }

    override fun getCount(): Int {
    return mList!!.count()
    }

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

包com.example.sliderimagemovie.Adapter
导入android.content.Context
导入android.support.v4.view.PagerAdapter
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入android.widget.ImageView
导入android.widget.TextView
导入com.example.sliderimagemovie.Model.Slide
导入com.example.sliderimagemovie.R
类幻灯片适配器:PagerAdapter{
var mContext:上下文?=null
变量mList:列表?=null
构造函数(上下文:上下文,列表:列表)
{
mContext=上下文
mList=列表
}
覆盖元素(容器:视图组,位置:Int):任意{
变量膨胀器:LayoutInflater=mContext!!.getSystemService(Context.LAYOUT\u inflater\u SERVICE)作为LayoutInflater
var slideLayout:View=充气机。充气(R.layout.slide\u项,空)
var slidemage:ImageView=slideLayout.findViewById(R.id.slide\u图像)
var slideText:TextView=slideLayout.findViewById(R.id.movie_title)
slideImage.setImageResource(mList!!.get(position).image)
slideText.setText(mList!!.get(position).title)
container.addView(slideLayout)
//返回超级实例化项(容器、位置)
返回幻灯片
}
覆盖有趣的isViewFromObject(p0:View,p1:Any):布尔值{
返回p0==p1
}
重写fun getCount():Int{
返回mList!!.count()
}
覆盖项(容器:视图组,位置:Int,`object`:Any){
//super.destroyItem(容器、位置、`object`)
container.removeView(`object`作为视图)
}
}
HomeFragment.kt

package com.example.sliderimagemovie
import android.app.Application
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.support.v4.app.Fragment
import android.support.v4.view.ViewPager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.example.sliderimagemovie.Adapter.SlidePagerAdapter
import com.example.sliderimagemovie.Model.Slide
import kotlinx.android.synthetic.main.fragment_home.*
import kotlin.concurrent.fixedRateTimer

class HomeFragment : Fragment() {

    var lstSlides:MutableList<Slide> =ArrayList()
    var sliderPage: ViewPager?=null


    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_home, container, false)
        sliderPage=view.findViewById(R.id.view_pager_glide)




        lstSlides.add(Slide(R.drawable.spiderman,"Slide1 Spiderman"))
        lstSlides.add(Slide(R.drawable.avenger,"Slide2 Avenger"))
        lstSlides.add(Slide(R.drawable.frozen2,"Slide3 Frozen2"))
        lstSlides.add(Slide(R.drawable.fastfurious,"Slide4 Fastfurious"))
        lstSlides.add(Slide(R.drawable.joker,"Slide5 Joker"))
        lstSlides.add(Slide(R.drawable.jumanji,"Slide6 Jumanji"))
        lstSlides.add(Slide(R.drawable.terminator,"Slide7 Terminator"))



        var adapter: SlidePagerAdapter = SlidePagerAdapter(context!!,this.lstSlides)
        sliderPage!!.adapter=adapter


       indicator.setupWithViewPager(sliderPage,true)
     fixedRateTimer(name = "timer",initialDelay = 4000,period = 6000){

// I'm getting error over here. Since runOnUiThread wont work with fragment , I tried to run with //activity. but its not working. I tried couple of other things.

        getactivity().runOnUiThread
 {
             public override fun run() {
                 if (sliderPage!!.currentItem < lstSlides.count() - 1) {
                     sliderPage!!.currentItem = sliderPage!!.currentItem + 1
                 } else {
                     sliderPage!!.currentItem = 0
                 }

             }
         })

    }
        return view
    }


}
package com.example.sliderimagemovie
导入android.app.Application
导入android.os.Bundle
导入android.os.Handler
导入android.os.Looper
导入android.support.v4.app.Fragment
导入android.support.v4.view.ViewPager
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入com.example.sliderimagemovie.Adapter.SlidePagerAdapter
导入com.example.sliderimagemovie.Model.Slide
将kotlinx.android.synthetic.main.fragment\u导入主页*
导入kotlin.concurrent.fixedRateTimer
类HomeFragment:Fragment(){
var:MutableList=ArrayList()
var sliderPage:ViewPager?=空
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
val视图=充气机。充气(R.layout.fragment\u home,container,false)
sliderPage=view.findViewById(R.id.view\u pager\u glide)
添加(幻灯片(R.drawable.spiderman,“幻灯片1 spiderman”))
添加(幻灯片(R.drawable.avenger,“幻灯片2 avenger”))
添加(幻灯片(R.drawable.frozen2,“幻灯片3 frozen2”))
lstlides.add(幻灯片(R.drawable.Fastfreed,“幻灯片4 Fastfreed”))
添加(幻灯片(R.drawable.joker,“幻灯片5 joker”))
添加(幻灯片(R.drawable.jumanji,“幻灯片6 jumanji”))
lstlides.add(幻灯片(R.drawable.terminator,“幻灯片7 terminator”))
变量适配器:SlidePagerAdapter=SlidePagerAdapter(context!!,this.lstsslides)
滑块页!!.adapter=适配器
指示器。设置WithViewPager(幻灯片页,真)
fixedRateTimer(name=“timer”,initialDelay=4000,period=6000){
//我在这里遇到了错误。因为runOnUiThread无法使用fragment,所以我尝试使用//activity运行。但它不起作用。我尝试了其他一些方法。
getactivity().runOnUiThread
{
公共超控趣味跑(){
if(sliderPage!!.currentItem
不工作是什么意思?有撞车吗?
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context=".HomeFragment">


    <android.support.constraint.ConstraintLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".MainActivity">

        <android.support.v4.view.ViewPager
                android:layout_width="0dp"
                android:layout_height="275dp" app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
                android:id="@+id/view_pager_glide"/>
        <android.support.design.widget.TabLayout
                app:tabBackground="@drawable/indicator_item"
                app:tabGravity="center"
                app:tabIndicatorHeight="0dp"
                android:layout_width="395dp"
                android:layout_height="wrap_content"
                app:layout_constraintTop_toBottomOf="@+id/view_pager_glide" app:layout_constraintStart_toStartOf="parent"
                android:layout_marginLeft="8dp" android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
                android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:id="@+id/indicator">


        </android.support.design.widget.TabLayout>

    </android.support.constraint.ConstraintLayout>

</FrameLayout>

package com.example.sliderimagemovie.Model

class Slide(var image:Int, var title:String)

package com.example.sliderimagemovie.Adapter

import android.content.Context
import android.support.v4.view.PagerAdapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import com.example.sliderimagemovie.Model.Slide
import com.example.sliderimagemovie.R

class SlidePagerAdapter:PagerAdapter {


    var mContext: Context?=null
    var mList:List<Slide>?=null

    constructor(context: Context, list:List<Slide>)
    {
        mContext=context
        mList=list
    }

    override fun instantiateItem(container: ViewGroup, position: Int): Any {

        var inflater:LayoutInflater= mContext!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater

        var slideLayout:View =inflater.inflate(R.layout.slide_item,null)

        var slideImage:ImageView =slideLayout.findViewById(R.id.slide_image)
        var slideText:TextView=slideLayout.findViewById(R.id.movie_title)
        slideImage.setImageResource(mList!!.get(position).image)
        slideText.setText(mList!!.get(position).title)
        container.addView(slideLayout)

        //return super.instantiateItem(container, position)
        return slideLayout

    }

    override fun isViewFromObject(p0: View, p1: Any): Boolean {
        return p0 == p1
    }

    override fun getCount(): Int {
    return mList!!.count()
    }

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
        //super.destroyItem(container, position, `object`)
        container.removeView(`object` as View)
    }
}
package com.example.sliderimagemovie
import android.app.Application
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.support.v4.app.Fragment
import android.support.v4.view.ViewPager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.example.sliderimagemovie.Adapter.SlidePagerAdapter
import com.example.sliderimagemovie.Model.Slide
import kotlinx.android.synthetic.main.fragment_home.*
import kotlin.concurrent.fixedRateTimer

class HomeFragment : Fragment() {

    var lstSlides:MutableList<Slide> =ArrayList()
    var sliderPage: ViewPager?=null


    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_home, container, false)
        sliderPage=view.findViewById(R.id.view_pager_glide)




        lstSlides.add(Slide(R.drawable.spiderman,"Slide1 Spiderman"))
        lstSlides.add(Slide(R.drawable.avenger,"Slide2 Avenger"))
        lstSlides.add(Slide(R.drawable.frozen2,"Slide3 Frozen2"))
        lstSlides.add(Slide(R.drawable.fastfurious,"Slide4 Fastfurious"))
        lstSlides.add(Slide(R.drawable.joker,"Slide5 Joker"))
        lstSlides.add(Slide(R.drawable.jumanji,"Slide6 Jumanji"))
        lstSlides.add(Slide(R.drawable.terminator,"Slide7 Terminator"))



        var adapter: SlidePagerAdapter = SlidePagerAdapter(context!!,this.lstSlides)
        sliderPage!!.adapter=adapter


       indicator.setupWithViewPager(sliderPage,true)
     fixedRateTimer(name = "timer",initialDelay = 4000,period = 6000){

// I'm getting error over here. Since runOnUiThread wont work with fragment , I tried to run with //activity. but its not working. I tried couple of other things.

        getactivity().runOnUiThread
 {
             public override fun run() {
                 if (sliderPage!!.currentItem < lstSlides.count() - 1) {
                     sliderPage!!.currentItem = sliderPage!!.currentItem + 1
                 } else {
                     sliderPage!!.currentItem = 0
                 }

             }
         })

    }
        return view
    }


}