【问题标题】:View and paramater is returning null in android kotlin视图和参数在 android kotlin 中返回 null
【发布时间】:2022-01-25 01:25:23
【问题描述】:

我有一个片段,我正在从一个活动向它发送数据(参数,即 url 作为来自活动的字符串),但是在 onCreateView 中它的(参数)显示为 null 并且也查看为 null 我尝试了 bundle 方法,它也是也不行,代码是这样的。

private const val ARG_PARAM1 = "url"
private var Arg2 = ""
var mView: View? = null


class FragmentDisplayImage : Fragment() {

    private var param1: String? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        arguments?.let {


            param1 = it.getString("url")
            Arg2 = param1.toString()
            

//            Toast.makeText(context, param1.toString() , Toast.LENGTH_SHORT).show()
        }

    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        super.onCreateView(inflater, container, savedInstanceState);
        var a =this.getView()
        var image= view?.findViewById<ImageView>(R.id.Fragimage)
        Picasso.get().load(Arg2).resize(700, 700).centerCrop().into(image);
        return inflater.inflate(R.layout.fragment_display_image, container, false)

    }

如何在 oncreateView 中获取 param1 值以及如何解决这个给出 null 的图像/视图

【问题讨论】:

  • 你这里有 2 个问题,你必须编辑选择一个,这就是 SO 规则的工作方式。每个帖子一个问题。你要么解决了参数问题,要么解决了视图问题。

标签: android kotlin android-fragmentactivity


【解决方案1】:

onCreateView 方法应该返回视图。因为在创建视图之前使用 getView 无法为您提供视图,所以您在那里得到了空值。如果您将其更改为 requireView,它将不会为 null,但会引发异常。

由于您使用的是findViewById 而不是绑定,因此您必须覆盖onViewCreated,该方法包含一个参数view

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

   override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        var image= view.findViewById<ImageView>(R.id.Fragimage)
        Picasso.get().load(Arg2).resize(700, 700).centerCrop().into(image);
    }

【讨论】:

  • 覆盖 onViewCreated(view: View) 说期待成员声明
  • @iamyou 我已经更新了答案,出于学习的目的,请考虑尝试自己解决这些小差异,该方法是伪代码,可以为您提供足够的指示,以便您修复您的根问题。您可能会注意到,因为缺少用于声明方法的 fun 关键字,并且它有 3 个点而不是填充所有参数。您可以按 ctrl+o 或 cmd+o 来查看所有可用的覆盖方法。
  • 是的,谢谢,我是 Android 新手
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多