मैं रचना मेरे Android-अनुप्रयोग के लिए MvvmCross उपयोग कर रहा हूँ और मैं निम्नलिखित समस्या का सामना करना पड़ का उपयोग कर:दिखाएँ AlertDialog MvvmCross
जब मैं AlertDialog दिखाने के लिए कोशिश कर रहा हूँ, कि ViewModel में बनाया गया था,
"अनचाहे अपवाद: Android.Views.WindowManagerBadTokenException" प्रकट होता है।
public class MyViewModel : MvxViewModel
{
public ICommand ShowAlertCommand { get; private set; }
public AuthorizationViewModel()
{
ShowAlertCommand = new MvxCommand(() =>
{
var adb = new AlertDialog.Builder(Application.Context);
adb.SetTitle("Title here");
adb.SetMessage("Message here");
adb.SetIcon(Resource.Drawable.Icon);
adb.SetPositiveButton("OK", (sender, args) => { /* some logic */});
adb.SetNegativeButton("Cancel", (sender, args) => { /* close alertDialog */});
adb.Create().Show();
});
}
}
जब मैं गया था researching मैं ने पाया है कि यह प्रसंग के संदर्भ के संचरण की वजह से लेकिन AlertDialog.Builder में गतिविधि पर नहीं होता है।
this topic में मैं निम्नलिखित निर्णय पाया: GetService() के उपयोग के माध्यम से वर्तमान गतिविधि के संदर्भ में प्राप्त है, लेकिन मैं IMvxServiceConsumer साथ काम करने के लिए mvvmcross प्लगइन्स, IMvxAndroidCurrentTopActivity इंटरफेस नहीं मिला था।
मेरा प्रश्न क्या मैं व्यूमोडेल से अलर्टडिअलॉग दिखा सकता हूं? और मैं गतिविधि का संदर्भ कैसे प्राप्त कर सकता हूं, लेकिन एप्लिकेशन के लिए नहीं। कॉन्टेक्स्ट? और अलर्टडिअलॉग को बंद करने का सही तरीका क्या है कि उपयोगकर्ता वर्तमान दृश्य पर रहेगा?
ठीक है, मैं इस सामान :) –
मैं कोशिश कर रहा हूँ का मानना है कि वी एम से यूआई के साथ काम "फेंग शुई" नहीं है;), लेकिन Winphone और iPhone प्लेटफार्मों पहले से ही लांच कर रहे हैं, और मैं सिर्फ एंड्रॉयड की जरूरत मेरे आवेदन का संस्करण। भविष्य में, मेरी नई परियोजनाओं में, मैं आवश्यक रूप से कैनन एमवीवीएम के अनुसार विकसित होगा :) –
स्टुअर्ट, 'IMvxAndroidCurrentTopActivity' के बारे में एक छोटा सा प्रश्न: क्या यह हमेशा एक ही उदाहरण होगा, भले ही वर्तमान शीर्ष गतिविधि में परिवर्तन हो? पृष्ठभूमि: मैं सेवा स्थान का प्रशंसक नहीं हूं, इसके बजाय मेरी कक्षाएं स्पष्ट निर्भरताएं लेती हैं। क्या यह काम करेगा यदि मेरे सिंगलटन क्लास में 'IMvxAndroidCurrentTopActivity' पर एक कन्स्ट्रक्टर निर्भरता है और यह अभी भी वर्तमान गतिविधि पर हमेशा काम कर सकता है? –