gpt4 book ai didi

android - 如何在 Android kotlin 上的 fragment 中初始化上下文

转载 作者:行者123 更新时间:2023-12-02 13:01:46 26 4
gpt4 key购买 nike

在我的应用程序中,我想在 fragment 时显示消息有表演。
我用了viewPagerBottomNavBar演出 4 fragments !
我想要点击BottomNavBar商品展示fragment我想当知名度 fragment 显示消息 .
我写下面的代码:

class HomeRegisteredFragment : Fragment() {

lateinit var toolbarTile: TextView

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

return inflater.inflate(R.layout.fragment_home_registered, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//Initialize
activity?.let {
toolbarTile = it.findViewById(R.id.homePage_toolbarTitle)
}
//Set title
toolbarTile.text = resources.getString(R.string.registered)
context?.let { ContextCompat.getColor(it, R.color.blue_active) }?.let {
toolbarTile.setTextColor(it)
}
}

override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser)
if (isVisibleToUser) {
Log.e("showFragLog", "Show")
context?.let { Toast.makeText(it, "Show", Toast.LENGTH_SHORT).show() }
}
}
}

在我上面的代码中,当点击我的 BottomNavBar表演 fragment , 显示日志消息但不显示 toast 信息。
当点击另一个 BottomNavBar项目,然后再次单击上一个 BottomNavBar项目,然后显示 toast 信息。

我认为是第一次 未初始化 contextsetUserVisibleHint方法。

如何初始化 context演出 toast 每次?

最佳答案

我用以下代码更改了您的代码:

class HomeRegisteredFragment : Fragment() {

lateinit var toolbarTile: TextView
lateinit var handler: Handler

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

return inflater.inflate(R.layout.fragment_home_registered, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//Initialize
activity?.let {
toolbarTile = it.findViewById(R.id.homePage_toolbarTitle)
}
}

override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser)
if (isVisibleToUser) {
//Initialize
handler = Handler()
//Set delay
handler.postDelayed({
Toast.makeText(requireContext(),"Show",Toast.LENGTH_SHORT).show()
}, 10)
}
}
}

首先你应该使用 requireContext() 而不是 context() 为了避免内存泄漏。
每次都显示 Toast,您可以在 setUserVisibleHint 中初始化处理程序,然后经过一些延迟运行您的代码!

希望对你有帮助

关于android - 如何在 Android kotlin 上的 fragment 中初始化上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55402131/

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