片段中的 Glide 未下载图像

Image not being downloaded by Glide inside a Fragment

我正在尝试将图像下载到 Fragment 内的 ImageView 中,但 Glide 似乎甚至没有发出网络请求。 (我使用 Proxyman 从我的物理 Android 设备观察网络流量)。我不确定还能尝试什么。

片段代码如下:

class ExampleFragment : Fragment(R.layout.fragment_example) {
    @Inject
    lateinit var viewModelFactory: ViewModelProvider.Factory
    lateinit var viewModel: ExampleViewModel
    private lateinit var binding: FragmentExampleBinding

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding = FragmentExampleBinding.inflate(layoutInflater)
        (activity as ExampleActivity).appComponent.inject(this)
        viewModel = ViewModelProviders.of(this, viewModelFactory)
                .get(ExampleViewModel::class.java)

       // I have also tried `activity as FragmentActivity` instead of this
        Glide.with(this).load("https://www.popwebdesign.net/popart_blog/wp-content/uploads/2018/01/tiny-png-panda.jpg")
                .override(200)
                .into(binding.imageViewFaceTaggingStart)
    }
}

额外的细节:

<androidx.constraintlayout.widget.ConstraintLayout ... >
    <androidx.appcompat.widget.Toolbar ...></androidx.appcompat.widget.Toolbar>
    <ScrollView ...>
    <LinearLayout ...>
         <ImageView
                android:id="@+id/image_view_face_tagging_start"
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:visibility="visible"
                android:background="@android:color/black"
                android:scaleType="centerCrop"/>
         ....more views (TextView, Space, Checkbox)
        </LinearLayout>
    </ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

膨胀的视图和您使用的视图参考即binding不一样,

class ExampleFragment : Fragment() {
    @Inject
    lateinit var viewModelFactory: ViewModelProvider.Factory
    lateinit var viewModel: ExampleViewModel
    private lateinit var binding: FragmentExampleBinding


override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentExampleBinding.inflate(layoutInflater)
        return this.binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        (activity as ExampleActivity).appComponent.inject(this)
        viewModel = ViewModelProviders.of(this, viewModelFactory)
                .get(ExampleViewModel::class.java)

       // I have also tried `activity as FragmentActivity` instead of this
        Glide.with(this).load("https://www.popwebdesign.net/popart_blog/wp-content/uploads/2018/01/tiny-png-panda.jpg")
                .override(200)
                .into(binding.imageViewFaceTaggingStart)
    }
}

现在片段的视图是 binding,试试这个。

问题在这里class ExampleFragment : Fragment(R.layout.fragment_example)

现在片段将膨胀此 R.layout.fragment_example 而不是绑定,因此 binding 指的是另一个视图,