Skip to content

sabo99/ActivityResultContracts

Repository files navigation

Activity Result Contract with async & await (Asynchronous) - Android App Module

App Features Activity Result Contract :

  • ActivityResultContracts
    • Permissions
      • Request Permission
      • Multiple Request Permissions
    • Image
      • Pick Image from Camera
      • Select Image from Gallery
      • CropImageActivity with Pick Image or Select Image
    • Document
      • Open Single Document
      • Open Multiple Documents
  • CoroutineScope
    • GlobalScope
    • async{}
    • await()

Design UI App Activity Result Contract

Preview UI FirebaseAuth-Google

Name Page Preview UI Preview UI
Home none
Permissions
Crop Image
Open Single Document
Open Multiple Documents

Dependencies used

    // Kotlin Coroutine
    implementation 'androidx.activity:activity-ktx:1.4.0'
    // Image Cropper
    api 'com.theartofdev.edmodo:android-image-cropper:2.8.0'

Integration Step Used Binding in Kotlin

  1. Add viewBinding true build.gralde (Module)
android {
   ...
   buildFeatures {
      viewBinding true
   }
}
  1. Activity Kotlin Class
class MainActivity : AppCompatActivity() {

    /** Add this */
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        /** Add this */
        binding = ActivityMainBinding.inflate(layoutInflater)

        /** Change this */
        setContentView(binding.root)

        /** Without findViewById */
        binding.textView.text = "Bye bye findViewById"
    }
}
  1. Activity Java Class
public class MainActivity extends AppCompatActivity {

    /** Add this */
    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /** Add this */
        binding = ActivityMainBinding.inflate(getLayoutInflater());

        /** Change this */
        setContentView(binding.getRoot());

        /** Without findViewById */
        binding.textView.setText("Bye bye findViewById");
    }
}

binding in kotlin can be used directly without initializing findViewById on widgets in layout xml

Releases

No releases published

Packages

No packages published

Languages