我是新来的看约束力。如果我使用findViewById并使用intent的putExtra传递数据字符串data,一切都正常。但它不适用于视图绑定。
class MainActivity : AppCompatActivity() {
companion object{
const val camlinOrderKey = "com.example.mk_order.MainActivity.camlinOrderKey"
const val flairOrderKey = "com.example.mk_order.MainActivity.flairOrderKey"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var binding: ActivityMainBinding
binding = ActivityMainBinding.inflate(layoutInflater)
val eT1 = findViewById<EditText>(R.id.eT1)
// val eT2 = findViewById<EditText>(R.id.eT2)
val btnOrder = findViewById<Button>(R.id.btnOrder)
btnOrder.setOnClickListener {
val reviewIntent = Intent(this, ReviewOrder::class.java)
val camlinOrder = eT1.text.toString()
val flairOrder = binding.eT2.text.toString()
reviewIntent.putExtra(camlinOrderKey, camlinOrder)
reviewIntent.putExtra(flairOrderKey, flairOrder)
startActivity(reviewIntent)
}
}
}
eT1显示新活动的数据,但eT2为空。没有错误。eT2是空的。你能帮我找出错误吗?
2条答案
按热度按时间0dxa2lsx1#
发生此问题的原因是您没有将binding.root传递给Activity的setContentView方法,并且binding对象没有引用Activity布局中的视图。
根据view binding documentation:
要设置绑定类的示例以供Activity使用,请在Activity的onCreate()方法中执行以下步骤:
1.调用生成的绑定类中包含的静态inflate()方法。这将创建绑定类的示例供Activity使用。
1.通过调用getRoot()方法或使用Kotlin属性语法获取对根视图的引用。
1.将根视图传递给setContentView(),使其成为屏幕上的活动视图。
你应该把你的代码改成这样:
hs1ihplo2#
您必须将根视图传递给
setContentView()
,使其成为屏幕上的活动视图。ViewBinding | Android而不是
setContentView(R.layout.activity_main)
使用此setContentView(binding.root)