Glide没有在片段内下载图像



我正试图将图像下载到片段内的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)
}
}

额外细节:

  • 我读过http://bumptech.github.io/glide/doc/debugging.html#missing-图片和本地日志,其中提到了一些我可以尝试的事情。我可以确认我调用了into(),没有使用自定义目标,并且已经明确设置了图像视图的大小和背景颜色,以确保它不是"自定义目标";零宽度">
  • 我在"活动"中使用FragmentContainerView
  • 以下是XML文件的简化:
<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指的是另一个视图,

最新更新