程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了无法在 Fragment 中启动 contentView大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决无法在 Fragment 中启动 contentView?

开发过程中遇到无法在 Fragment 中启动 contentView的问题如何解决?下面主要结合日常开发的经验,给出你关于无法在 Fragment 中启动 contentView的解决方法建议,希望对你解决无法在 Fragment 中启动 contentView有所启发或帮助;

我正在尝试使用约束布局创建一个接管整个页面的按钮。但是,屏幕上什么也没有显示,我不知道该怎么办了。有什么建议么?我正在尝试对 Activity.setContentVIEw 使用 Fragment 的等效项,但似乎我无法使其工作。

class Login : Fragment(R.layout.fragment_login) {
    lateinit var cl: ConsTraintLayout
    lateinit var cs: ConsTraintSet
    lateinit var btn: button

    @Suppresslint("resourceType")
    overrIDe fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceStatE)
        cl = ConsTraintLayout(requireContext())
        btn = button(requireContext())
        btn.ID = 5
        var lp1: ConsTraintLayout.LayoutParams =
            ConsTraintLayout.LayoutParams(
                VIEwGroup.LayoutParams.MATCH_PARENT,VIEwGroup.LayoutParams.MATCH_PARENT
            )
        cl.layoutParams = lp1
        var lp2: ConsTraintLayout.LayoutParams =
            ConsTraintLayout.LayoutParams(0,0)
        btn.layoutParams = lp2
        btn.setText("bag pula")
        cl.addVIEw(btn)
        cs = ConsTraintSet()
        cs.clone(cl)
        cs.connect(btn.ID,ConsTraintSet.left,ConsTraintSet.PARENT_ID,ConsTraintSet.left)
        cs.connect(btn.ID,ConsTraintSet.RIGHT,ConsTraintSet.RIGHT)
        cs.connect(btn.ID,ConsTraintSet.top,ConsTraintSet.top)
        cs.connect(btn.ID,ConsTraintSet.bottOM,ConsTraintSet.bottOM)
        cs.applyTo(cl)
    }

    @Suppresslint("resourceType")
    @requiresAPI(Build.VERSION_CODEs.LolliPOp)
    overrIDe fun onCreateVIEw(
        inflater: LayoutInflater,container: VIEwGroup?,savedInstanceState: Bundle?
    ): VIEw? {
        return inflater!!.inflate(R.layout.fragment_login,container,falsE)
    }

    companion object {
        @JvmStatic
        fun newInstance(param1: String,param2: String) =
            Login().apply {
                arguments = Bundle().apply {
                    putString(ARG_ParaM1,param1)
                    putString(ARG_ParaM2,param2)
                }
            }
    }
}

How it should look
How it is

解决方法

我会建议一种不同但简单的方法

在您的 fragment.xml 文件中创建一个按钮来接管整个片段(使用匹配父级作为高度和宽度),然后在您的 Activity 中扩展该片段。 这应该是您的问题所建议的解决方案。

,

您创建了 ConsTraintLayout 并向其添加按钮,但您永远不会将 ConsTraintLayout 添加到屏幕上的布局并在 onCreateView() 中创建。您可以像添加按钮一样添加它。通过为每个视图生成新的布局参数,您避免了常见错误。

由于 onCreate()onCreateView() 之前运行,您需要将 ConsTraintLayout 的创建延迟到 onCreateView()(我的建议)或将其保存在 { {1}} 以供稍后在 onCreate() 中参onCreateView() 中的布局膨胀后,您可以向其中添加 ConsTraintLayout

那应该会让你重新开始。我建议您使用 Android studio 中提供的 Layout Inspector 来查看您在模拟器或真实设备上的布局构成。 Layout Inspector 通常可以提供有关正在(或未进行)什么的线索。

旁注:生成视图 ID 时,请执行以下操作:

onCreateView()

而不是硬编码一个常量。

大佬总结

以上是大佬教程为你收集整理的无法在 Fragment 中启动 contentView全部内容,希望文章能够帮你解决无法在 Fragment 中启动 contentView所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。