android - 如何从 Kotlin 中的片段更改活动中的图像
问题描述
在一个 android 应用程序中,我有一个包含多个片段的活动。在其中一个片段中,我有一个ImageButton
. 单击时,我想让某些事情直接在活动中发生,而不是在片段中。在这种情况下,我想设置一个图像。总而言之,ImageButton
在片段中,但ImageView
我想在点击时更改的是在活动中。
我该如何做到这一点?无论我尝试过什么都会导致应用程序崩溃。
这就是我的 fragment.kt 的样子:
class Fragment1 : Fragment() {
companion object{
fun newInstance() = Fragment1()
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_1, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
imageButton.setOnClickListener{
imageView.setImageResource(R.drawable.example)
}
}
}
解决方案
class Fragment1 : Fragment() {
var callbacks: OnFragmentCallbacks? = null
override fun onAttach(context: Context?) {
super.onAttach(context)
callbacks = activity as OnFragmentCallbacks
}
interface OnFragmentCallbacks{
fun changeImage(resourceId: Int)
}
companion object{
fun newInstance() = Fragment1()
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_1, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
imageButton.setOnClickListener{
callbacks?.changeImage(R.drawable.example)
}
}
在您的活动中:
// Change FragmentName with name of your Fragment class
class MainActivity : AppCompatActivity(), FragmentName.OnFragmentCallbacks{
override fun changeImage(resouseId: Int){
imageView.setImageDrawable(getResources().getDrawable(resourceId))
// or
imageView.setImageResource(resourceId)
}
只是在stackoverflow中编码,可能并不完美
推荐阅读
- python - 安装散景时出现问题:[WinError 126] 找不到指定的模块
- android - 如何从网页视图中的长点击链接获取 URL?
- reactjs - 将为 jsx 编写的“enquireScreen”js 转换为打字稿?
- php - Laravel 气闸与 Laravel 护照
- html - 我的网站在 chrome 中表现怪异,但在 Firefox/Internet Explorer 上运行良好
- algorithm - 这个函数的时间复杂度是多少?
- html - 如何在不使用“text-align:center”的情况下将文本放在 div 的中心?
- java - JTable 显示值错误/不显示整个值
- php - PHPUnit 模拟函数所以它不被调用
- python - 在 HDF 中附加多索引数据帧