2012-12-09 17 views
7

पर ArgumentNullException तो मैं विंडोज 8 ऐप में फ्रेम बदलने की कोशिश कर रहा हूं। मैंने this page पर ट्यूटोरियल का पालन करने का प्रयास किया, लेकिन मुझे एक ही त्रुटि मिल रही है।बदलते फ्रेम

मैं लाइन पर एक ArgumentNullException हो रही है:

frameState[_pageKey] = pageState; 
LayoutAwarePage.cs कक्षा में

, OnNavigatedFrom विधि में।

अब मुझे यकीन नहीं है कि मुझे यह त्रुटि क्यों मिलती है, क्योंकि मुझे लगता है कि ऐसा कुछ भी नहीं है जो मेरे कोड में हो सकता है। मेरे बटन onclick समारोह इस कोड है:

DateTime chosenDateTime = new DateTime(year, month, day, hours, minutes, seconds); 
this.Frame.Navigate(typeof(MainPage), chosenDateTime.ToString()); 

और मेरे mainpage में OnNavigatedTo विधि इस प्रकार है:

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    string parameter = (string)e.Parameter; 
    if (parameter != "") { 
     Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; 
     roamingSettings.Values["chosenDateTime"] = parameter; 
     chosenDateTime = Convert.ToDateTime(e.Parameter); 
    } else { 
     Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; 
     if (roamingSettings.Values.ContainsKey("chosenDateTime")) { 
      chosenDateTime = Convert.ToDateTime(roamingSettings.Values["chosenDateTime"].ToString()); 
     } 
     if (roamingSettings.Values.ContainsKey("headline")) { 
      chosenDateTextBlock.Text = roamingSettings.Values["headline"].ToString(); 
     } 
    } 
    SetTime(); 
} 

किसी को भी मुझे मैं यह कैसे हल कर सकते हैं बारे में कुछ जानकारी दे सकते हैं?

धन्यवाद।

उत्तर

10

ठीक है, इसलिए मुझे अपने प्रश्न का उत्तर मिला!

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    base.OnNavigatedTo(e); 
} 

protected override void OnNavigatedFrom(NavigationEventArgs e) { 
    base.OnNavigatedFrom(e); 
} 

और

base.OnNavigatedFrom(e); 
base.OnNavigatedTo(e); 

में होना बहुत महत्वपूर्ण थे:

दोनों पृष्ठों मैं करने के लिए और मैं से उल्लेख पर कम से कम करने के लिए लागू किया है 2 तरीकों में से कम से कम कार्यान्वयन था तरीकों।

+1

उत्तर को सही के रूप में जांचें;) –

0

एक अन्य स्थिति जो इस समस्या को ट्रिगर कर सकती है वह यह है कि यदि पृष्ठ अब किसी भी फ्रेम से जुड़ा हुआ नहीं है (उदाहरण के लिए यह ईवेंट हैंडलर या अन्य संदर्भों के कारण स्मृति में अभी भी है लेकिन इसका फ्रेम पहले ही पृष्ठ से दूर हो गया है)।

यदि आप Frame.Navigate() को एक ईवेंट हैंडलर में कॉल करते हैं तो यह गलती से करना बहुत आसान है जो कई बार ट्रिगर किया जा सकता है या कई बार ईवेंट से जुड़ा हो सकता है (पहला आमंत्रण काम करेगा, लेकिन दूसरा नंबर पेज नंबर के बाद बुलाया जाएगा अब कोई फ्रेम है)।

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