我想在Android上启动另一个活动,但我得到了这个错误:
请指定构造函数调用;分类器“Page2”没有伴生对象
在实例化Intent
类之后。我应该怎么做才能纠正这个错误?我的代码:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun buTestUpdateText2 (view: View) {
val changePage = Intent(this, Page2)
// Error: "Please specify constructor invocation;
// classifier 'Page2' does not have a companion object"
startActivity(changePage)
}
}
发布于 2017-08-05 13:56:20
要在java中启动Activity
,我们编写了Intent(this, Page2.class)
,基本上你必须在第一个参数中定义Context
,在第二个参数中定义目标类。根据源代码中的Intent
方法-
public Intent(Context packageContext, Class<?> cls)
如你所见,我们必须在第二个参数中传递Class<?>
类型。
通过编写Intent(this, Page2)
,我们从来没有指定我们要传递类,我们试图传递class
类型,这是不可接受的。
使用::class.java
,它是kotlin中.class
的替代品。使用以下代码启动Activity
Intent(this, Page2::class.java)
示例:
val intent = Intent(this, NextActivity::class.java)
// To pass any data to next activity
intent.putExtra("keyIdentifier", value)
// start your next activity
startActivity(intent)
发布于 2017-08-07 13:06:26
简单地说,您可以使用这个简单的方法在KOTLIN
中启动Activity
,
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("key", value)
startActivity(intent)
发布于 2018-01-11 14:39:26
要开始一个新的活动,
startActivity(Intent(this@CurrentClassName,RequiredClassName::class.java)
因此,将您的代码更改为:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun buTestUpdateText2 (view: View) {
startActivity(Intent(this@MainActivity,ClassName::class.java))
// Also like this
val intent = Intent(this@MainActivity,ClassName::class.java)
startActivity(intent)
}
https://stackoverflow.com/questions/45518139
复制相似问题