gpt4 book ai didi

android - 我如何将变量从我的适配器传递到我在 Kotlin 中实例化的 fragment

转载 作者:行者123 更新时间:2023-11-29 02:30:03 25 4
gpt4 key购买 nike

我遵循了有关开始使用 tabhost 和 fragment 的教程,有链接:https://medium.com/@eijaz/getting-started-with-tablayout-in-android-kotlin-bb7e21783761

但我遇到了一个问题,我想将值 activityID 发送到我的 tabhost 包含的 fragment ,但我不知道该怎么做。

我在 Internet 上发现有一种方法 setArgument,但我的对象中没有一个包含此方法。

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

这是我的 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 方法。适配器仅保存 fragment 。 fragmentssetArguments 方法。

在您的 TabHostAdapter 中,您可以将值 activityID 设置为所需的 fragment (FirstFragmentSecondFragment),使用setArguments 方法。在返回 fragment 之前,在您的 getItem 方法中,类似于以下内容:

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

关于android - 我如何将变量从我的适配器传递到我在 Kotlin 中实例化的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com