Skip to content

Instantly share code, notes, and snippets.

View BelyakovLeonid's full-sized avatar

Leonid Belyakov BelyakovLeonid

View GitHub Profile
@BelyakovLeonid
BelyakovLeonid / step2.kt
Created May 31, 2021 08:09
Send the result
applyButton.setOnClickListener {
setFragmentResult(
"request_key",
bundleOf("extra_key" to getSelectedSort())
)
}
@BelyakovLeonid
BelyakovLeonid / step1.kt
Last active May 31, 2021 08:09
register a FragmentResultListener
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setFragmentResultListener("request_key") { key, bundle ->
val selectedSort = bundle.getParcelable<Sort>("extra_key")
// applying the obtained sorting
}
}
@BelyakovLeonid
BelyakovLeonid / new_activity.kt
Created March 17, 2021 06:01
new_activity_medium
class NewActivity : AppCompatActivity(R.layout.a_main) {
val permission = registerForActivityResult(RequestPermission()) { granted ->
when {
granted -> {
camera.launch() // access to the camera is allowed, open the camera
}
!shouldShowRequestPermissionRationale(Manifest.permission.CAMERA) -> {
// access to the camera is denied, the user has checked the Don't ask again.
}
@BelyakovLeonid
BelyakovLeonid / permissions_activity.kt
Created March 17, 2021 06:00
permissions_activity_medium
class PermissionsActivity : AppCompatActivity(R.layout.a_main) {
val singlePermission = registerForActivityResult(RequestPermission()) { granted ->
when {
granted -> {
// access to the camera is allowed, open the camera
}
!shouldShowRequestPermissionRationale(Manifest.permission.CAMERA) -> {
// access to the camera is denied, the user has checked the Don't ask again.
}
@BelyakovLeonid
BelyakovLeonid / launching_contract.kt
Created March 17, 2021 05:54
launching_contract_medium
vButton.setOnClickListener {
activityLauncher.launch("What is the answer?")
}
@BelyakovLeonid
BelyakovLeonid / register_contract.kt
Created March 17, 2021 05:53
register_contract_medium
val activityLauncher = registerForActivityResult(MySecondActivityContract()) { result ->
// using result
}
@BelyakovLeonid
BelyakovLeonid / contract.kt
Created March 17, 2021 05:51
contract_medium
class MySecondActivityContract : ActivityResultContract<String, Int?>() {
override fun createIntent(context: Context, input: String?): Intent {
return Intent(context, SecondActivity::class.java)
.putExtra("my_input_key", input)
}
override fun parseResult(resultCode: Int, intent: Intent?): Int? = when {
resultCode != Activity.RESULT_OK -> null
else -> intent?.getIntExtra("my_result_key", 42)
@BelyakovLeonid
BelyakovLeonid / dependencies.kt
Created March 17, 2021 05:43
dependencies_medium
implementation 'androidx.activity:activity-ktx:1.3.0-alpha04'
implementation 'androidx.fragment:fragment-ktx:1.3.1'
@BelyakovLeonid
BelyakovLeonid / old_activity_medium.kt
Last active March 17, 2021 05:41
old_activity_medium
class OldActivity : AppCompatActivity(R.layout.a_main) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
vButtonCamera.setOnClickListener {
when {
checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED -> {
// access to the camera is allowed, open the camera
startActivityForResult(