Kotlin:指定的 child 已经有一个 parent。您必须先在 child 的 parent 上调用 removeView()
Kotlin : The specified child already has a parent. You must call removeView() on the child's parent first
谁能告诉我这是什么问题。这是代码:
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)
} }
我在练习layout inflate
不知道写什么
您正在尝试将 ID 为 root_layout
的 LinearLayout
添加为自己的 child 此处:
layout.addView(layout)
也许您打算将新膨胀的 View
添加为它的 child?
layout.addView(view)
你的整个代码块应该只是
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
包含在主布局中。
谁能告诉我这是什么问题。这是代码:
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)
} }
我在练习layout inflate
不知道写什么
您正在尝试将 ID 为 root_layout
的 LinearLayout
添加为自己的 child 此处:
layout.addView(layout)
也许您打算将新膨胀的 View
添加为它的 child?
layout.addView(view)
你的整个代码块应该只是
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
包含在主布局中。