Skip to content

Commit 6f0bef5

Browse files
committed
Fix TransactionDialog crash on configuration change
1 parent 029df56 commit 6f0bef5

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

app/src/main/java/cz/muni/fi/rpg/ui/character/InventoryFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class InventoryFragment : Fragment(R.layout.fragment_inventory),
5454
viewModel.money.observe(viewLifecycleOwner, characterMoney::setValue)
5555

5656
characterMoney.setOnClickListener {
57-
TransactionDialog(viewModel).show(parentFragmentManager, "TransactionDialog")
57+
TransactionDialog.newInstance(characterId).show(parentFragmentManager, null)
5858
}
5959

6060
view.addNewInventoryItemButton.setOnClickListener { showDialog(null) }

app/src/main/java/cz/muni/fi/rpg/ui/character/inventory/TransactionDialog.kt

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,35 @@ import android.os.Bundle
55
import android.view.View
66
import android.widget.ArrayAdapter
77
import androidx.appcompat.app.AlertDialog
8+
import androidx.core.os.bundleOf
89
import androidx.fragment.app.DialogFragment
910
import cz.muni.fi.rpg.R
11+
import cz.muni.fi.rpg.model.domain.character.CharacterId
1012
import cz.muni.fi.rpg.model.domain.character.NotEnoughMoney
1113
import cz.muni.fi.rpg.model.domain.common.Money
1214
import cz.muni.fi.rpg.ui.common.adapters.SpinnerAdapterWithWidthMatchingSelectedItem
15+
import cz.muni.fi.rpg.ui.common.parcelableArgument
1316
import cz.muni.fi.rpg.ui.views.TextInput
1417
import cz.muni.fi.rpg.viewModels.InventoryViewModel
1518
import kotlinx.android.synthetic.main.dialog_transaction.view.*
1619
import kotlinx.coroutines.CoroutineScope
1720
import kotlinx.coroutines.Dispatchers
1821
import kotlinx.coroutines.launch
1922
import kotlinx.coroutines.withContext
23+
import org.koin.android.viewmodel.ext.android.viewModel
24+
import org.koin.core.parameter.parametersOf
2025

21-
class TransactionDialog(
22-
private val viewModel: InventoryViewModel
23-
) : DialogFragment(),
24-
CoroutineScope by CoroutineScope(Dispatchers.Default) {
26+
class TransactionDialog : DialogFragment(), CoroutineScope by CoroutineScope(Dispatchers.Default) {
27+
companion object {
28+
const val ARGUMENT_CHARACTER_ID = "characterId"
29+
30+
fun newInstance(characterId: CharacterId) = TransactionDialog().apply {
31+
arguments = bundleOf(ARGUMENT_CHARACTER_ID to characterId)
32+
}
33+
}
34+
35+
private val characterId: CharacterId by parcelableArgument(ARGUMENT_CHARACTER_ID)
36+
private val viewModel: InventoryViewModel by viewModel { parametersOf(characterId) }
2537

2638
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
2739
val activity = requireActivity()

0 commit comments

Comments
 (0)