MVVM और बाध्यकारी और संदर्भ

0

सवाल

मेरे सहयोगी और मैं एक तर्क था. हम आवेदन का अनुवाद करने के लिए MVVM+बाध्यकारी है । वहाँ एक की जरूरत है, शुरू करने के लिए एक संवाद से एक टुकड़ा है. मैं इसे इस तरह से:

में टुकड़ा:

fragmentBinding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
       // there's a bunch of code here 
     alertDialog.show();
}});

एक सहयोगी का यह भी दावा है कि आप की जरूरत है ऐसा करने के लिए:

Xml फ़ाइल में हम लिखने के रूप में इस प्रकार है:

android:onClick="@{v -> viewModel.showDialog(context)}"

और ViewModel में:

fun showDialog(context: Context){
     AlertDialog.Builder builder = new AlertDialog.Builder(context);
       // there's a bunch of code here
     alertDialog.show();
}

कृपया, मुझे बताओ, जो एक सही है?

android binding mvvm
2021-11-21 22:26:10
1

सबसे अच्छा जवाब

2

ViewModel के लिए जिम्मेदार है, की तैयारी के लिए डेटा यूआई में वर्णित के रूप में Android डेवलपर गाइड.

इसलिए एक सबसे अच्छा अभ्यास है कभी नहीं के साथ सौदा करने के लिए यूआई तत्वों में ViewModel. हालांकि, कोड अभी भी निष्पादित अगर हम पारित Context करने के लिए ViewModel की अनुमति है और यह दिखाने के लिए एक alertDialog, आप भी करने की जरूरत है कि बारे में पता होना गतिविधि/टुकड़ा और ViewModel में अलग-अलग lifecycles, तो आप की जरूरत है सावधान रहना करने के लिए से गुजर रहा है जब Context करने के लिए ViewModel

एक और अधिक समझदार तरीके से इस संभाल करने के लिए, के लिए किया जाएगा के लिए ViewModel बनाए रखने के लिए एक झंडा और तैयार करने की आवश्यकता का उपयोग कर संदेश LiveData या कुछ इसी तरह की है, तो यह है कि गतिविधि / टुकड़ा देखने को मिलती है कि वास्तव में बनाने के लिए और दिखाने के लिए एक AlertDialog हो रही द्वारा संदेश से ViewModel, और सूचित ViewModel जब संवाद दिखाया गया है/क्लिक किया है, तो यह है कि ViewModel संभाल लेंगे बाद में व्यापार तर्क है ।

के लिए अपने विशेष मामले में, मैं छोड़ना होगा AlertDialog कोड में गतिविधि/टुकड़ा है, जबकि यदि आवश्यक हो तो मैं से डेटा पुनर्प्राप्त ViewModel.

2021-11-21 22:45:45

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................