Passing arguments lets you send information from one screen to another in your app. This helps screens show different content based on what you send.
When you want to open a details screen showing info about a selected item.
When you need to send user input from one screen to another for processing.
When navigating between screens that share data like user ID or settings.
When you want to customize the next screen based on choices made earlier.
Syntax
Android Kotlin
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("key", value)
startActivity(intent)
Use putExtra() to add data to the Intent before starting the new screen.
The key is a String to identify the data; value can be a String, Int, Boolean, etc.
Examples
Sends an integer 42 with key "itemId" to DetailActivity.
Android Kotlin
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("itemId", 42)
startActivity(intent)
Sends a String "Alice" with key "username" to ProfileActivity.
Android Kotlin
val intent = Intent(this, ProfileActivity::class.java)
intent.putExtra("username", "Alice")
startActivity(intent)
Sends a Boolean true with key "notificationsEnabled" to SettingsActivity.
Android Kotlin
val intent = Intent(this, SettingsActivity::class.java)
intent.putExtra("notificationsEnabled", true)
startActivity(intent)
Sample App
This app has two screens. When you tap the button on the first screen, it opens the second screen and sends a message. The second screen shows the message in a text view.
Android Kotlin
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("message", "Hello from MainActivity")
startActivity(intent)
}
}
}
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val message = intent.getStringExtra("message")
val textView = findViewById<TextView>(R.id.textView)
textView.text = message ?: "No message received"
}
}
OutputSuccess
Important Notes
Always use the same key string to send and receive data.
Check for null when getting extras to avoid crashes if data is missing.
You can pass many types of data, but complex objects need special handling.
Summary
Passing arguments lets screens share information easily.
Use Intent and putExtra() to send data when starting a new screen.
Retrieve data in the new screen using getIntent().getXExtra() methods.
Practice
(1/5)
1. What is the primary purpose of passing arguments between activities in Android Kotlin?
easy
A. To close the current activity
B. To change the app theme
C. To share data between different screens
D. To update the app version
Solution
Step 1: Understand activity communication
Activities often need to share information like user input or selections.
Step 2: Purpose of passing arguments
Passing arguments allows one screen to send data to another screen.
Final Answer:
To share data between different screens -> Option C
Quick Check:
Passing arguments = sharing data [OK]
Hint: Passing arguments means sending data between screens [OK]
Common Mistakes:
Thinking it changes app theme
Confusing with app version updates
Assuming it closes activities
2. Which Kotlin code correctly passes a String argument "username" with value "Alice" to another activity using Intent?
easy
A. val intent = Intent(this, NextActivity::class.java)
intent.putExtra("username", "Alice")
startActivity(intent)
B. val intent = Intent(this, NextActivity::class.java)
intent.putString("username", "Alice")
startActivity(intent)
C. val intent = Intent(this, NextActivity::class.java)
intent.addExtra("username", "Alice")
startActivity(intent)
D. val intent = Intent(this, NextActivity::class.java)
intent.setExtra("username", "Alice")
startActivity(intent)
Solution
Step 1: Identify correct Intent method
The method to add data is putExtra(key, value).
Step 2: Check method names in options
Only val intent = Intent(this, NextActivity::class.java)
intent.putExtra("username", "Alice")
startActivity(intent) uses putExtra correctly; others use invalid method names.
Final Answer:
val intent = Intent(this, NextActivity::class.java)\nintent.putExtra("username", "Alice")\nstartActivity(intent) -> Option A
Quick Check:
Use putExtra() to pass data [OK]
Hint: Use putExtra() to add data to Intent [OK]
Common Mistakes:
Using non-existent methods like putString or addExtra
Forgetting to call startActivity()
Passing wrong argument types
3. What will be the output of the following code in the receiving activity?
val username = intent.getStringExtra("username")
textView.text = username ?: "Guest"
If the sending activity did NOT pass any "username" extra?
medium
A. The app will crash with NullPointerException
B. The TextView will show "null"
C. The TextView will be empty
D. The TextView will show "Guest"
Solution
Step 1: Understand getStringExtra behavior
If no extra is passed, getStringExtra returns null.
Step 2: Analyze Elvis operator usage
The expression username ?: "Guest" means if username is null, use "Guest".
Final Answer:
The TextView will show "Guest" -> Option D
Quick Check:
Null fallback with ?: operator = "Guest" [OK]
Hint: ?: operator provides default if null [OK]
Common Mistakes:
Expecting null string to display
Assuming app crashes on null
Forgetting ?: fallback
4. Identify the error in this code snippet that tries to retrieve an Int extra named "age":
val age = intent.getIntExtra("age")
textView.text = age.toString()
medium
A. getIntExtra requires a default value as second argument
B. getIntExtra should be getIntExtras
C. age.toString() is invalid for Int
D. Intent cannot carry Int values
Solution
Step 1: Check getIntExtra method signature
getIntExtra requires two arguments: key and default value.
Step 2: Identify missing argument
The code misses the default value argument, causing a compile error.
Final Answer:
getIntExtra requires a default value as second argument -> Option A
Quick Check:
getIntExtra(key, default) needs default [OK]
Hint: Always provide default value for getIntExtra [OK]
Common Mistakes:
Omitting default value argument
Using wrong method name getIntExtras
Thinking Int can't be passed
5. You want to pass a list of Strings named "items" from one activity to another. Which is the correct way to pass and retrieve this list using Intent?
hard
A. Use intent.putExtra("items", items) and intent.getStringExtra("items")
B. Use intent.putStringArrayListExtra("items", items) and intent.getStringArrayListExtra("items")
C. Use intent.putExtra("items", items.toString()) and intent.getStringExtra("items")
D. Use intent.putExtra("items", items) and intent.getSerializableExtra("items")
Solution
Step 1: Passing a list of Strings
For ArrayList<String>, use putStringArrayListExtra to pass the list.
Step 2: Retrieving the list
Use getStringArrayListExtra to get the list back safely.
Final Answer:
Use intent.putStringArrayListExtra("items", items) and intent.getStringArrayListExtra("items") -> Option B
Quick Check:
Use put/getStringArrayListExtra for String lists [OK]
Hint: Use put/getStringArrayListExtra for String lists [OK]
Common Mistakes:
Passing list as plain putExtra
Converting list to string incorrectly
Using getSerializableExtra without casting
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.