'How to create a button in Kotlin that opens a new activity (Android Studio)?
Hello I'm making an app using Android Studio and the Kotlin language and am having trouble getting my button to open a new activity. I have the button created in my xml file but I can't find the KOTLIN syntax of how to declare it in MainActivity.kt and how to create the OnClicklistener that would take me to the new activity. I have the new activity defined in the manifest as well I think I just need syntax help on how to actually switch from MainActivity.kt to secondActivity.kt. Any help is appreciated.
Solution 1:[1]
You can add onclick
event listener like below.
button1.setOnClickListener(object: View.OnClickListener {
override fun onClick(view: View): Unit {
// Handler code here.
val intent = Intent(context, DestActivity::class.java);
startActivity(intent);
}
})
Or you can use simplified form
button1.setOnClickListener {
// Handler code here.
val intent = Intent(context, DestActivity::class.java)
startActivity(intent);
}
Solution 2:[2]
Button in layout xml file
<Button
android:id="@+id/btn_start_new_activity"
android:text="New Activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
For declaring it in the Kotlin Activity file
var btn_new_activity = findViewById(R.id.btn_start_new_activity) as Button
Set Onclicklistener to the button, to start new activity when button is clicked
btn_new_activity.setOnClickListener {
val intent = Intent(context, NewActivity::class.java)
startActivity(intent);
}
Reference: Android Studio Tutorial - https://www.youtube.com/watch?v=7AcIGyugR7M
Solution 3:[3]
I recommend you use the Anko - extension for Kotlin https://github.com/Kotlin/anko. It let you use intent(and more other things) the shortest way. In your case it`ll be:
button {
onClick { startActivity<SecondActivity>() }
}
Solution 4:[4]
// In your method `fun onCreate(savedInstanceState: Bundle?)` add this.
your_btn_id.setOnClickListener{
val intent = Intent(this, yourpagename::class.java)
startActivity(intent)
}
// till now if it doesn't work then, check if these two files are added or not,
import android.content.Intent
import kotlinx.android.synthetic.main.activity_otp.*
// Hope that it would work. ?
Solution 5:[5]
You can create a generic method to launch any Activity
inline fun<reified T> launchActivity(){
val intent = Intent(this, T::class.java)
startActivity(intent)
}
And can be use like
button1.setOnClickListener {
launchActivity<AnyActivity>()
}
To get More details about reified Go to Here
Solution 6:[6]
You can simply declare your button in the main activity as below:
val button = findViewById<Button>(R.id.button)
button.setOnClickListener(this);
And in the clicklistener start the new activity:
override fun onClick(p0: View?) {
val intent = Intent(this, activity::class.java)
startActivity(intent)
}
Solution 7:[7]
I had to add first id 'kotlin-android-extensions'
inside of plugins in build.gradle.
after that in OnCreate
Button.setOnClickListener {
}
Solution 8:[8]
Kotlin
Make sure the item is inside the OnCreate
method.
Edit the XML
file (res/layout folder) and create button:
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Press me"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="40dp"
android:layout_marginEnd="40dp"
android:layout_marginBottom="40dp"
/>
Next is main activity class:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button: Button = findViewById(R.id.button)
button.setOnClickListener {
val intent = Intent(context, NewActivity::class.java)
startActivity(intent);
}
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | |
Solution 3 | Kirill Bitkov |
Solution 4 | Raghib Arshi |
Solution 5 | |
Solution 6 | Nikitha |
Solution 7 | Irving Alan Medina Juarez |
Solution 8 |