繁体   English   中英

我如何将变量从适配器传递给我在Kotlin中实例化的片段

[英]How can i pass a variable from my adapter to a fragment i instantiate in Kotlin

我遵循了有关Tabhost和片段入门的教程,有链接: https ://medium.com/@eijaz/getting-started-with-tablayout-in-android-kotlin-bb7e21783761

但是我遇到了一个问题,我想向我的Tabhost包含的片段发送一个值activityID,但我不知道该怎么做。

我在互联网上发现有一个方法setArgument,但是我的对象中没有一个包含此方法。

我做错什么了吗 ? 或者有人可以向我解释如何将我的值从ActivityTabHost发送到片段?

这是我的ActivityTabHost.kt

import android.os.Bundle
import training.gutai.apps.gutai.R
import kotlinx.android.synthetic.main.activity_tabhost.*
import android.support.v7.app.AppCompatActivity
import android.util.Log
import training.gutai.apps.gutai.models.TabHostAdapter


class ActivityTabHost : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_tabhost)

        val activityID = intent.extras.getInt("id")
        Log.d("Id", activityID.toString())
        val fragmentAdapter = TabHostAdapter(supportFragmentManager, activityID)
        viewpager_main.adapter = fragmentAdapter
        tabs_main.setupWithViewPager(viewpager_main)
    }
}

这是我的TabHostAdapter.kt:

import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentPagerAdapter
import training.gutai.apps.gutai.viewControllers.FirstFragment
import training.gutai.apps.gutai.viewControllers.SecondFragment

class TabHostAdapter(fm: FragmentManager, activityID : Int) :         FragmentPagerAdapter(fm) {

    val fm : FragmentManager = fm

    override fun getItem(position: Int): Fragment {
        return when (position) {
            0 -> {
                FirstFragment()
            }
            else -> {
                SecondFragment()
            }
        }
    }

    override fun getCount(): Int {
        return 2
    }

    override fun getPageTitle(position: Int): CharSequence {
        return when (position) {
            0 -> "First Tab"
            else -> "Second Tab"
        }
    }
}

FragmentPagerAdapter没有setArguments方法。 适配器仅保留碎片。 这些片段具有setArguments方法。

在你TabHostAdapter您可以将该值设置activityID到所需的片段( FirstFragmentSecondFragment使用) setArguments方法。 在返回片段之前,在getItem方法中执行以下操作:

val fragment = FirstFragment()
val args = Bundle()
args.putInt("activityID", activityID)
fragment.setArguments(args)    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM