Bird
Raised Fist0
Android Kotlinmobile~10 mins

SavedStateHandle in Android Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to retrieve a value from SavedStateHandle.

Android Kotlin
val name: String? = savedStateHandle.get<String>([1])
Drag options to blanks, or click blank then click option'
A"userName"
BuserName
C"user_name"
Duser_name
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to put quotes around the key string.
Using a variable name without quotes.
2fill in blank
medium

Complete the code to save a value into SavedStateHandle.

Android Kotlin
savedStateHandle.set([1], "John")
Drag options to blanks, or click blank then click option'
Auser_name
BuserName
C"user_name"
D"userName"
Attempts:
3 left
💡 Hint
Common Mistakes
Using unquoted keys when calling set().
Confusing variable names with string keys.
3fill in blank
hard

Fix the error in the code to observe a LiveData from SavedStateHandle.

Android Kotlin
val liveData = savedStateHandle.getLiveData<String>([1])
Drag options to blanks, or click blank then click option'
Auser_name
B"userName"
CuserName
D"user_name"
Attempts:
3 left
💡 Hint
Common Mistakes
Using unquoted keys causing compile errors.
Mixing variable names with string keys.
4fill in blank
hard

Fill both blanks to create a SavedStateHandle with initial values.

Android Kotlin
val initialState = mapOf([1] to "Alice", [2] to 25)
initialState.forEach { (k, v) -> savedStateHandle.set(k, v) }
Drag options to blanks, or click blank then click option'
A"name"
B"age"
Cname
Dage
Attempts:
3 left
💡 Hint
Common Mistakes
Using unquoted keys in the map.
Using variable names instead of string keys.
5fill in blank
hard

Fill all three blanks to update and retrieve a value safely from SavedStateHandle.

Android Kotlin
savedStateHandle.set([1], 100)
val score: Int = savedStateHandle.get<Int>([2]) ?: [3]
Drag options to blanks, or click blank then click option'
A"score"
C0
D100
Attempts:
3 left
💡 Hint
Common Mistakes
Using different keys for set and get.
Not providing a default value causing null errors.
Using unquoted keys.

Practice

(1/5)
1.

What is the main purpose of SavedStateHandle in Android Kotlin?

easy
A. To save and restore small UI-related data automatically during configuration changes
B. To manage database connections
C. To handle network requests
D. To create UI layouts dynamically

Solution

  1. Step 1: Understand the role of SavedStateHandle

    SavedStateHandle is designed to save small pieces of data like UI state during configuration changes such as screen rotations.
  2. Step 2: Compare with other options

    Options A, B, and D relate to network requests, database connections, and UI layout creation, which are not the purpose of SavedStateHandle.
  3. Final Answer:

    To save and restore small UI-related data automatically during configuration changes -> Option A
  4. Quick Check:

    SavedStateHandle saves UI state = C [OK]
Hint: Remember: SavedStateHandle saves UI data on config changes [OK]
Common Mistakes:
  • Confusing SavedStateHandle with database or network management
  • Thinking it manages large data or files
  • Assuming it creates UI layouts
2.

Which of the following is the correct way to store a value "username" in SavedStateHandle named savedStateHandle?

?
easy
A. savedStateHandle.put("username", "John")
B. savedStateHandle.set("username", "John")
C. savedStateHandle.save("username", "John")
D. savedStateHandle.store("username", "John")

Solution

  1. Step 1: Recall SavedStateHandle API methods

    The correct method to store data is set(key, value).
  2. Step 2: Check method names in options

    Only savedStateHandle.set("username", "John") uses set, others use incorrect method names.
  3. Final Answer:

    savedStateHandle.set("username", "John") -> Option B
  4. Quick Check:

    Use set() to store data = A [OK]
Hint: Use set() to save data in SavedStateHandle [OK]
Common Mistakes:
  • Using put(), save(), or store() which do not exist
  • Confusing with SharedPreferences methods
  • Forgetting to use quotes around keys
3.

Given the code below, what will be the output of println(savedStateHandle.get<String>("name"))?

val savedStateHandle = SavedStateHandle()
savedStateHandle.set("name", "Alice")
savedStateHandle.set("age", 30)
savedStateHandle.set("name", "Bob")
medium
A. null
B. Alice
C. Bob
D. 30

Solution

  1. Step 1: Analyze the set operations

    The key "name" is first set to "Alice", then overwritten with "Bob".
  2. Step 2: Determine the value returned by get

    Getting "name" returns the latest value, which is "Bob".
  3. Final Answer:

    Bob -> Option C
  4. Quick Check:

    Last set value returned = A [OK]
Hint: Last set value for a key is returned by get() [OK]
Common Mistakes:
  • Assuming first set value is returned
  • Confusing key names
  • Expecting numeric value for string key
4.

Identify the error in the following code snippet using SavedStateHandle:

val savedStateHandle = SavedStateHandle()
savedStateHandle.set("count", 10)
val count: String = savedStateHandle.get("count") ?: "0"
println(count)
medium
A. println() cannot print variables
B. Missing key in get() method
C. SavedStateHandle cannot store Int values
D. Type mismatch: trying to assign Int to String without conversion

Solution

  1. Step 1: Check variable types

    The value stored is Int (10), but retrieved as String without conversion.
  2. Step 2: Understand Kotlin type safety

    Assigning Int to String variable causes a type mismatch error.
  3. Final Answer:

    Type mismatch: trying to assign Int to String without conversion -> Option D
  4. Quick Check:

    Type mismatch error = D [OK]
Hint: Match types when getting values from SavedStateHandle [OK]
Common Mistakes:
  • Ignoring type mismatch errors
  • Assuming automatic type conversion
  • Thinking SavedStateHandle only stores strings
5.

You want to save a user's score in SavedStateHandle and restore it after a configuration change. Which approach correctly ensures the score is saved and retrieved safely?

class ScoreViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
    fun saveScore(score: Int) {
        // What to do here?
    }
    fun getScore(): Int {
        // What to do here?
    }
}
hard
A. saveScore: savedStateHandle.set("score", score) getScore: savedStateHandle.get<Int>("score") ?: 0
B. saveScore: savedStateHandle.put("score", score) getScore: savedStateHandle.get("score") as Int
C. saveScore: savedStateHandle.save("score", score) getScore: savedStateHandle.get("score") ?: 0
D. saveScore: savedStateHandle.set("score", score.toString()) getScore: savedStateHandle.get<String>("score")?.toInt() ?: 0

Solution

  1. Step 1: Use correct methods to save and get data

    Use set to save and get<Int> to retrieve with a default fallback.
  2. Step 2: Validate type safety and default value

    saveScore: savedStateHandle.set("score", score) getScore: savedStateHandle.get<Int>("score") ?: 0 uses correct method names and safely returns 0 if no score is saved.
  3. Final Answer:

    saveScore: savedStateHandle.set("score", score) getScore: savedStateHandle.get<Int>("score") ?: 0 -> Option A
  4. Quick Check:

    Use set() and get<Int>() with default = B [OK]
Hint: Always use set() and get<Type>() with default fallback [OK]
Common Mistakes:
  • Using non-existent methods like put() or save()
  • Storing Int as String unnecessarily
  • Not providing default value on get()
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