Skip to content

Instantly share code, notes, and snippets.

View k0siara's full-sized avatar
🧐
Investigating a bug

Patryk Kosieradzki k0siara

🧐
Investigating a bug
View GitHub Profile
@k0siara
k0siara / MyViewModel.kt
Created November 5, 2022 21:22
MyViewModel.kt
class MyViewModel : ViewModel(), ... {
fun onSomeAction() {
viewModelScope.launch {
...
val dialogResult = showTryAgainDialog(data = ...)
...
}
}
}
@k0siara
k0siara / HomeFragment.kt
Created November 5, 2022 21:21
HomeFragment.kt
class HomeFragment : Fragment(R.layout.home_fragment) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
findNavController()
.currentBackStackEntry
?.savedStateHandle
?.getLiveData<String>("my-result-key")
?.observe(viewLifecycleOwner) { result ->
@k0siara
k0siara / MyDialogFragment.kt
Created November 5, 2022 21:20
MyDialogFragment.kt
class MyDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
AlertDialog.Builder(requireContext())
.setMessage(getString(R.string.order_confirmation))
.setPositiveButton(getString(R.string.ok)) { _, _ ->
findNavController()
.previousBackStackEntry
?.savedStateHandle?.set("my-result-key", "example-data")
}
@k0siara
k0siara / ActivityHandling3Dialogs.kt
Created November 5, 2022 21:17
ActivityHandling3Dialogs.kt
class MainActivity : FragmentActivity(),
NoticeDialogFragment.NoticeDialogListener,
SecondDialogFragment.Listener,
ThirdDialogFragment.Listener {
private val viewModel by ...
fun showNoticeDialog() {
val dialog = NoticeDialogFragment()
dialog.show(supportFragmentManager, "NoticeDialogFragment")
@k0siara
k0siara / NoticeDialogFragment.kt
Created November 5, 2022 21:15
NoticeDialogFragment.kt
class NoticeDialogFragment : DialogFragment() {
internal lateinit var listener: NoticeDialogListener
interface NoticeDialogListener {
fun onDialogPositiveClick(dialog: DialogFragment)
fun onDialogNegativeClick(dialog: DialogFragment)
}
override fun onAttach(context: Context) {
super.onAttach(context)
@k0siara
k0siara / BetterMyFragment.kt
Created November 5, 2022 21:10
BetterMyFragment.kt
class MyFragment : Fragment(R.layout.my_layout) {
fun onSomeAction() {
coroutineScope.launch {
// Code A
when (val dialogResult = showDialogAndAwaitResult()) {
DialogResult.Ok -> {
// Code C
}
@k0siara
k0siara / MyFragment.kt
Created November 5, 2022 21:08
MyFragment.kt
class MyFragment : Fragment(R.layout.my_layout) {
fun onSomeAction() {
// Code A
showDialog(
onOkClicked = { ... },
onCancelClicked = { ... }
)
@k0siara
k0siara / HomeFragment.kt
Last active November 5, 2022 21:05
HomeFragment.kt
class HomeFragment : Fragment(R.layout.home_fragment) {
private val binding by viewBinding<HomeFragmentBinding>()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.button.setOnClickListener {
findNavController().navigate(HomeFragmentDirections.toMyDialog())
}
@k0siara
k0siara / home_nav_graph.xml
Last active November 5, 2022 21:01
home_nav_graph.xml
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/home_nav_graph"
app:startDestination="@id/homeFragment">
<fragment
android:id="@+id/homeFragment"
android:name="org.example.HomeFragment"
@k0siara
k0siara / main_nav_graph.xml
Last active November 5, 2022 20:59
main_nav_graph.xml
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_nav_graph"
app:startDestination="@id/startDestinationFragment">
...
<include app:graph="@navigation/my_dialog_nav_graph" />