Android Kotlin-片段中setImageBitmap的未解析参考

时间:2018-10-18 05:32:41

标签: java android android-fragments kotlin

我只是尝试在ImageView中的片段中设置位图:

imageLeft.setImageBitmap(duelbildBitmap)

并为Unresolved reference获得setImageBitmap

为什么?它可以在活动中起作用

预先感谢

1 个答案:

答案 0 :(得分:0)

您不能仅使用R.id.imageView,因为它是 integer 而不是ImageView对象。因此无法在setImageBitmap()上找到Integer方法。

您有两种方法

1:使用findViewById()

class GalleryFragment : Fragment() {
    private lateinit var viewOfLayout: View
    private lateinit var imageView: ImageView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        viewOfLayout = inflater.inflate(R.layout.fragment, container, false)
        return viewOfLayout
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        imageView = view.findViewById(R.id.imageView)
        imageView.setImageBitmap(bitmap) // set bitmap anywhere
    }
}

2:使用kotlinx.android.synthetic

class GalleryFragment : Fragment() {
    private lateinit var viewOfLayout: View
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        viewOfLayout = inflater.inflate(R.layout.fragment, container, false)
        viewOfLayout.imageView.setImageBitmap(bitmap) // set bitmap anywhere
        return viewOfLayout
    }
}

如果在这种情况下没有自动导入imageView,请手动导入。

import kotlinx.android.synthetic.main.fragment.view.*

第二种方法是,如果未在应用程序级别apply plugin: 'kotlin-android-extensions'文件的末尾应用插件build.gradle,则必须应用插件。{p>