Communication between Activity and Fragment Using Viewmodel

22 Views Asked by At

Comunication between activity and framgment is not working, observing barcode is executing when ubdating barcode LiveData value.

MainActivity

private val viewModel: BarcodeViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)

        **viewModel.barcode.observe(this) {
            binding.barcodes.text = it
        }**
    }

in ScannerFragment i am creating viewmodel like this and updating barcode value when it scanned.

private val viewModel: BarcodeViewModel by activityViewModels()

BarcodeViewModel

class BarcodeViewModel: ViewModel() {
    private val mutableSelectedItem = MutableLiveData<String>()
    val barcode: LiveData<String>  = mutableSelectedItem

    fun selectBarcode(item: String) {
        mutableSelectedItem.value = item
    }
}

i am trying to create shared instance of BarcodeViewModel. after updating barcode Livedata update UI in MainActivity.

0

There are 0 best solutions below