Kotlin Android start new Activity
Solution 1:
To start an Activity
in java we wrote Intent(this, Page2.class)
, basically you have to define Context
in first parameter and destination class in second parameter. According to Intent
method in source code -
public Intent(Context packageContext, Class<?> cls)
As you can see we have to pass Class<?>
type in second parameter.
By writing Intent(this, Page2)
we never specify we are going to pass class, we are trying to pass class
type which is not acceptable.
Use ::class.java
which is alternative of .class
in kotlin. Use below code to start your Activity
Intent(this, Page2::class.java)
Example -
val intent = Intent(this, NextActivity::class.java)
// To pass any data to next activity
intent.putExtra("keyIdentifier", value)
// start your next activity
startActivity(intent)
Solution 2:
Simply you can start an Activity
in KOTLIN
by using this simple method,
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("key", value)
startActivity(intent)
Solution 3:
To start a new Activity ,
startActivity(Intent(this@CurrentClassName,RequiredClassName::class.java)
So change your code to :
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)
}