Skip to content

Instantly share code, notes, and snippets.

View hamurcuabi's full-sized avatar
🏠
Working from home

Emre Hamurcu hamurcuabi

🏠
Working from home
View GitHub Profile
@hamurcuabi
hamurcuabi / SharedViewModel.kt
Created January 7, 2024 12:01
SharedViewModel
class SharedViewModel() : ViewModel() {
var data: String = "SharedViewModel Data"
private set
}
import android.os.Bundle
import android.widget.ProgressBar
import android.widget.TextView
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
class MainActivity : AppCompatActivity() {
private val mainViewModel: MainViewModel by viewModels()
package com.hamurcuabi.myapplication
import android.content.Context
import android.graphics.Typeface
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import androidx.core.view.isVisible
import com.hamurcuabi.myapplication.databinding.ViewCustomToolbarBinding
class HomeFragment : Fragment(),
OnBackPressedDelegation by OnBackPressedDelegationImpl() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
registerOnBackPressedDelegation(activity, this.lifecycle) {
// OnBackPressed fired!!!
}
}
}
class OnBackPressedDelegationImpl : OnBackPressedDelegation, DefaultLifecycleObserver {
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
onBackPressed.invoke()
}
}
private var fragmentActivity: FragmentActivity? = null
interface OnBackPressedDelegation {
fun registerOnBackPressedDelegation(
fragmentActivity: FragmentActivity?,
lifecycle: Lifecycle,
onBackPressed: () -> Unit
)
}
@hamurcuabi
hamurcuabi / HomeFragment.kt
Created October 29, 2022 13:18
Without Delegation
class HomeFragment : Fragment() {
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// On back pressed
}
}
override fun onResume() {
super.onResume()
import android.app.Activity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale
import androidx.fragment.app.Fragment
object PermissionUtil {
// register permission on top of Fragment or Activity like below
private val cameraPermission = registerPermission {
onCameraPermissionResult(it)
}
private val storagePermission = registerPermission {
onStoragePermissionResult(it)
}
fun Permission.launchSinglePermission(permission: String) {
this.result.launch(arrayOf(permission))
}
fun Permission.launchMultiplePermission(permissionList: Array<String>) {
this.result.launch(permissionList)
}