Android fragments 尝试在kotlin中的片段中执行自动图像滑块,但是RunouitThread不工作。有可能的解决方案吗?
我正在尝试在kotlin的片段中进行自动图像滑动。 我正在尝试将一个活动转换为片段。但是RunouitThread不在片段中工作。有任何可能的解决方案吗 我还尝试了其他一些东西。但这不是一个可能的解决方案,我可以在片段内部进行图像滑动,但不能进行自动滑动 我的主要活动 activity_main.xmlAndroid 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
<?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
}
}