【问题标题】:Kotlin : The specified child already has a parent. You must call removeView() on the child's parent firstKotlin:指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()
【发布时间】:2018-07-02 15:36:27
【问题描述】:

谁能告诉我是什么问题。这是代码:

package com.mohdjey.user.inflate

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.os.strictmode.WebViewMethodCalledOnWrongThreadViolation
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.mohdjey.user.inflate.R.id.root_layout
import com.mohdjey.user.inflate.R.layout.activity_main
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_main.view.*

 class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(activity_main)

    var inflater: LayoutInflater? = null
    var view: View? = null


 //   inflater.inflate(R.layout.child_layout_to_merge, parent_layout, true);
    view = inflater?.inflate(R.layout.another_view , null)

    val layout = findViewById<LinearLayout>(R.id.root_layout)

    layout.addView(layout)


} }

我正在练习布局膨胀。

我不知道该写什么。

【问题讨论】:

  • 检查 attachToRoot 并将其设置为 false in inflater?.inflate(R.layout.another_view, null, false)

标签: android kotlin layout-inflater android-inflate kotlin-extension


【解决方案1】:

您正尝试在此处将 ID 为 root_layoutLinearLayout 添加为其自己的孩子:

layout.addView(layout)

也许您打算将新膨胀的View 添加为其子级?

layout.addView(view)

【讨论】:

  • 它显示另一个错误“无法将空子视图添加到 ViewGroup”
  • 如果以上是你的全部代码,那是因为你还没有初始化inflater。例如,您可以使用 inflater = LayoutInflater.from(this) 执行此操作,因为您在 Activity 中。
  • 更好的是,您可以只使用属性layoutInflater(来自 Activity 的 java getLayoutInflater)。那将是非空的。
【解决方案2】:

你的整个代码块应该是

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(activity_main)
    val root = findViewById<LinearLayout>(R.id.root_layout)
    val view = layoutInflater.inflate(R.layout.another_view, root, false)
    root.addView(view)
}

话虽如此,尚不清楚为什么不直接在主布局中包含 R.layout.another_view

【讨论】:

    猜你喜欢
    • 2013-10-18
    • 1970-01-01
    • 2015-09-06
    • 2020-02-16
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多