Bird
Raised Fist0
Android Kotlinmobile~5 mins

Intent for activity navigation in Android Kotlin

Choose your learning style10 modes available
Introduction

We use intents to move from one screen to another in an app. It helps users go to different parts of the app easily.

When you want to open a new screen after a button click.
To move from a login screen to the home screen after successful login.
When you want to show details of an item selected from a list.
To switch between different features of the app.
Syntax
Android Kotlin
val intent = Intent(this, TargetActivity::class.java)
startActivity(intent)

Intent is a message to start another screen.

this refers to the current screen, and TargetActivity::class.java is the screen to open.

Examples
Basic example to open SecondActivity from current activity.
Android Kotlin
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
Send extra data (itemId) to the new screen.
Android Kotlin
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("itemId", 123)
startActivity(intent)
Open a web page using an intent.
Android Kotlin
val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse("https://www.example.com")
startActivity(intent)
Sample App

This app has two screens. When you tap the button on the first screen, it opens the second screen.

Android Kotlin
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.Button

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val button = findViewById<Button>(R.id.buttonNavigate)
        button.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            startActivity(intent)
        }
    }
}

class SecondActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
    }
}
OutputSuccess
Important Notes

Always declare your activities in the AndroidManifest.xml file.

You can pass data between activities using putExtra and retrieve it with getIntent().getExtras().

Intents can also be used to start system actions like opening a web page or calling a phone number.

Summary

Intent helps move between screens in an app.

Use Intent(this, TargetActivity::class.java) to create an intent.

Call startActivity(intent) to open the new screen.

Practice

(1/5)
1. What is the main purpose of an Intent in Android Kotlin?
easy
A. To store user data permanently
B. To style the user interface
C. To navigate from one activity to another
D. To handle background tasks

Solution

  1. Step 1: Understand Intent usage

    An Intent is used to request an action from another app component, commonly to start a new activity.
  2. Step 2: Identify navigation role

    In Android, Intent is primarily used to navigate between screens (activities).
  3. Final Answer:

    To navigate from one activity to another -> Option C
  4. Quick Check:

    Intent = Navigation [OK]
Hint: Intent is for moving between screens [OK]
Common Mistakes:
  • Confusing Intent with data storage
  • Thinking Intent styles UI
  • Assuming Intent handles background tasks
2. Which of the following is the correct syntax to create an Intent to start SecondActivity from the current activity?
easy
A. val intent = Intent(this, SecondActivity::class.java)
B. val intent = Intent(SecondActivity, this::class.java)
C. val intent = Intent(this, SecondActivity)
D. val intent = Intent(SecondActivity::class.java, this)

Solution

  1. Step 1: Check Intent constructor parameters

    The Intent constructor requires the current context and the target activity class with ::class.java.
  2. Step 2: Validate syntax correctness

    val intent = Intent(this, SecondActivity::class.java) correctly uses this for context and SecondActivity::class.java for the target.
  3. Final Answer:

    val intent = Intent(this, SecondActivity::class.java) -> Option A
  4. Quick Check:

    Intent(this, TargetActivity::class.java) = Correct [OK]
Hint: Use this and TargetActivity::class.java in Intent [OK]
Common Mistakes:
  • Swapping parameters order
  • Omitting ::class.java
  • Using activity instance instead of class
3. What will happen when the following code runs inside an activity?
val intent = Intent(this, DetailActivity::class.java)
startActivity(intent)
medium
A. The app will crash due to missing permissions
B. The current activity will close and DetailActivity will open
C. Nothing will happen because startActivity is missing parameters
D. DetailActivity will open on top of the current activity

Solution

  1. Step 1: Analyze Intent creation

    The Intent is correctly created to open DetailActivity from the current context.
  2. Step 2: Understand startActivity behavior

    Calling startActivity launches the new activity on top without closing the current one.
  3. Final Answer:

    DetailActivity will open on top of the current activity -> Option D
  4. Quick Check:

    startActivity(intent) = Opens new screen on top [OK]
Hint: startActivity opens new screen on top [OK]
Common Mistakes:
  • Thinking startActivity closes current activity
  • Assuming permissions needed for navigation
  • Believing startActivity requires extra parameters
4. Identify the error in this code snippet that tries to start ProfileActivity:
val intent = Intent(ProfileActivity::class.java, this)
startActivity(intent)
medium
A. The parameters in Intent are reversed
B. startActivity is missing parentheses
C. ProfileActivity should be an instance, not a class
D. Intent requires a string action, not classes

Solution

  1. Step 1: Check Intent constructor parameter order

    The Intent constructor expects the current context first, then the target activity class.
  2. Step 2: Identify parameter reversal

    Here, the target activity class is given first, then the context, which is incorrect.
  3. Final Answer:

    The parameters in Intent are reversed -> Option A
  4. Quick Check:

    Intent(this, TargetActivity::class.java) = Correct order [OK]
Hint: Context first, target class second in Intent [OK]
Common Mistakes:
  • Swapping context and target activity
  • Forgetting ::class.java
  • Using activity instance instead of context
5. You want to open SettingsActivity and close the current activity so the user cannot return by pressing back. Which code snippet achieves this?
hard
A. val intent = Intent(this, SettingsActivity::class.java) startActivity(intent)
B. val intent = Intent(this, SettingsActivity::class.java) startActivity(intent) finish()
C. val intent = Intent(this, SettingsActivity::class.java) finish() startActivity(intent)
D. val intent = Intent(this, SettingsActivity::class.java) startActivityForResult(intent, 1)

Solution

  1. Step 1: Understand startActivity and finish

    startActivity opens the new activity; finish closes the current one.
  2. Step 2: Order matters

    Calling finish() after startActivity ensures the new screen opens before current closes.
  3. Step 3: Check options

    val intent = Intent(this, SettingsActivity::class.java) startActivity(intent) finish() correctly calls startActivity then finish to prevent back navigation.
  4. Final Answer:

    val intent = Intent(this, SettingsActivity::class.java) startActivity(intent) finish() -> Option B
  5. Quick Check:

    startActivity + finish = Open new and close current [OK]
Hint: Call finish() after startActivity to close current [OK]
Common Mistakes:
  • Calling finish() before startActivity
  • Not calling finish() at all
  • Using startActivityForResult unnecessarily
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard