【发布时间】:2021-07-12 00:52:59
【问题描述】:
我是 kotlin 的新手,我想将我的活动中的数据发送到我的选项卡片段,所以在用户数据之后,我想显示与用户相关的关注者并在同一活动中使用选项卡片段进行关注,所以我创建了2 个片段,并尝试将 ArrayList 发送到两个片段
val listdata: Account? =intent.getParcelableExtra(EXTRA_DATAS)
if (listdata != null) {
name.text = listdata.name
username.text = listdata.username
company.text = "${listdata.company} , ${listdata.location}"
repository.text = "${listdata.repository} total repo"
following.text = "${listdata.following} following"
followers.text = "${listdata. followers} followers"
this.title = listdata.username
url_followers = "https://api.github.com/users/${listdata.username}/followers"
url_followings = "https://api.github.com/users/${listdata.username}/following"
Glide.with(this)
.load(listdata.avatar)
.into(imgPhoto)
}
ShowViewPager()
getData(url_followers) //this return arraylist
getData(url_followings) //this return arraylist
val fragment = FollowersFragment.newInstance(getData(url_followers))
val bundle = Bundle()
bundle.putString("HaloHalo","coba")
val fragfollowers = FollowersFragment()
fragfollowers.setArguments(bundle);
supportFragmentManager.beginTransaction().add(FollowersFragment(),"hihi").commit()
// val bundle2 = Bundle()
// bundle2.putParcelableArrayList(FollowingFragment.EXTRA_DATA,getData(url_followings))
// val transaction2 = supportFragmentManager.beginTransaction()
// val fragfollowers2 = FollowingFragment()
// fragfollowers2.arguments = bundle2
// transaction2.commit()
这就是我获取数据的方式,但它没有显示任何数据,只是 null 这是我在 FollowersFragment 中的伴生对象
companion object {
private var list: ArrayList<Account> = arrayListOf()
fun newInstance(data: ArrayList<Account>)= FollowersFragment().apply {
val fragment = FollowersFragment()
val args = Bundle()
args.putString("punten", "coba coba")
fragment.setArguments(args)
return fragment
}
}
这是我的followersFragment中的onCreateView函数
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val rootview = inflater.inflate(R.layout.fragment_followers, container, false)
// Inflate the layout for this fragment
var sect : TextView = rootview.findViewById(R.id.section_label_followers)
// list = this.getParcelableArrayList<Account>(EXTRA_DATA)
// val test = arguments
var bundle = arguments
var cak = bundle?.getString("hihi")
var cek = bundle?.getString("punten")
sect.text = cak + cek
return rootview
}
当我尝试 arraylist 并失败时,我认为这个问题是由我的空 araylist 引起的,但是在我尝试使用上面的代码之类的字符串之后,它仍然没有发送任何一个,你能帮我解决这个问题吗?
我使用 pageadapter,这是我的页面
private fun ShowViewPager() {
val sectionsPagerAdapter = SectionsPagerAdapter(this)
val viewPager: ViewPager2 = findViewById(R.id.viewPager)
viewPager.adapter = sectionsPagerAdapter
val tabs: TabLayout = findViewById(R.id.tabLayout)
TabLayoutMediator(tabs, viewPager) { tab, position ->
tab.text = resources.getString(TAB_TITLES[position])
}.attach()
supportActionBar?.elevation = 0f
}
【问题讨论】:
-
所以你的片段在 viewpager 上并且你的 viewpager 附加了活动对吗??
-
@D_K 是的,但我不知道如何传递数据
标签: android kotlin android-fragments android-fragmentactivity