2013-08-23 5 views
7

के साथ एंड्रॉइड पर अधिसूचनाओं का उपयोग करना मैं एक प्लगइन बनाना चाहता हूं जो अधिसूचना-सेवा जैसी कुछ लागू करता है।एमवीवीएमक्रॉस

तो क्या मैं इस समय कर रहा हूँ कुछ इस तरह है:

 var activity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity; 
     var builder = new NotificationCompat.Builder(activity.ApplicationContext) 
      .SetContentTitle(title) 
      .SetSmallIcon(Resource.Drawable.Icon) 
      .SetContentText(message); 
     var notificationManager = (NotificationManager)activity.ApplicationContext.GetSystemService(Context.NotificationService); 
     notificationManager.Notify(0, builder.Build()); 

यह ठीक काम करता है और अधिसूचना के रूप में यह दिखाना चाहिए दिखाने करता है। अगला कदम यह है कि मैं अधिसूचना से मेरी गतिविधि में नेविगेट करना चाहता हूं। जिसका अर्थ है एमवीएमएमक्रॉस में मैं अपने व्यूमोडेल पर नेविगेट करना चाहता हूं।

लेकिन अब मैं ShowViewModel < ...>() - इस अधिसूचना में कैसे आदेश देता हूं? क्या यह भी संभव है?

देशी एंड्रॉइड पर मैं एक लंबित इंटेंटेंट बनाउंगा जो मेरी गतिविधि को इंगित करता है जो मैं दिखाना चाहता हूं।

कोई विचार? संकेत? युक्ति? :-)

उत्तर

7

एंड्रॉइड पर डिफ़ॉल्ट एमवीवीएमक्रॉस प्रेजेंटर नेविगेशन के लिए Intent एस का उपयोग करता है। ये IMvxAndroidViewModelRequestTranslator इंटरफ़ेस में Intent GetIntentFor(MvxViewModelRequest request) विधि द्वारा उत्पन्न किए गए हैं।

डिफ़ॉल्ट रूप से यह भीतर कार्यान्वित किया जाता है: MvxAndroidViewsContainer.cs#L117

public virtual Intent GetIntentFor(MvxViewModelRequest request) 
    { 
     var viewType = GetViewType(request.ViewModelType); 
     if (viewType == null) 
     { 
      throw new MvxException("View Type not found for " + request.ViewModelType); 
     } 

     var converter = Mvx.Resolve<IMvxNavigationSerializer>(); 
     var requestText = converter.Serializer.SerializeObject(request); 

     var intent = new Intent(_applicationContext, viewType); 
     intent.PutExtra(ExtrasKey, requestText); 

     AdjustIntentForPresentation(intent, request); 

     intent.AddFlags(ActivityFlags.NewTask); 
     return intent; 
    } 

आप अन्य प्रयोजनों के लिए Intent रों उत्पन्न करने के लिए की जरूरत है (उदाहरण के लिए आदेश तो पर जाने के लिए और PendingIntent रों उत्पन्न में) आप कर सकते हैं Resolve तो और इस इंटरफेस फोन स्वयं।

var request = MvxViewModelRequest<MyViewModel>.GetDefaultRequest(); 
    request.PresentationValues = new Dictionary<string, string>() { 
     { "life", "42" } 
    }; 
    var translator = Mvx.Resolve<IMvxAndroidViewModelRequestTranslator>(); 
    var intent = translator.GetIntentFor(request); 
    var pending = PendingIntent.GetActivity (context, 0, intent, 0); 

MvxViewModelRequest वस्तुओं पैदा करने पर अधिक जानकारी के लिए, देखें भी MvxNavigatingObject.cs

+0

में अतिभारित ShowViewModel तरीकों क्या आप जानते हैं कैसे कुछ इस तरह V1 में किया जा चाहते हैं? – Jake

संबंधित मुद्दे