2010-08-22 5 views
11

मेरे पास एक साधारण रूप है जहां उपयोगकर्ता किसी सूची से लोगों को जोड़, संपादित और हटा सकता है। जब किसी उपयोगकर्ता ने किसी व्यक्ति को संपादित करना चुना है तो यह startActivityForResult को निष्पादित करता है ताकि संपादन उचित होने के बाद उचित परिवर्तन कर सकें और सूची को रीफ्रेश कर सकें। यदि उपयोगकर्ता संपादन स्क्रीन से बैक बटन पर क्लिक करता है तो एक बल बंद त्रुटि दिखाई देती है।स्टार्ट एक्टिविटीफॉर रिसेट सक्रिय होने पर मैं बैक बटन कैसे संभालें?

मुझे विश्वास है कि इसके परिणामस्वरूप सिस्टम की अपेक्षा करने के लिए कुछ है, और मैं इसे ठीक से फँस नहीं रहा हूं। मैं इस त्रुटि को कैसे फँस दूंगा?

यहाँ जगह में वर्तमान में onActivityResult कोड है:


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
super.onActivityResult(requestCode, resultCode, intent); 
Bundle extras = intent.getExtras(); 
switch(requestCode) { 
case ACTIVITY_CREATE: 
    String person = extras.getString("person"); 
    mDbHelper.addPerson(person); 
    fillData(); 
    break; 
case ACTIVITY_EDIT: 
    Long rowId = extras.getLong("_id"); 
    if (rowId != null) { 
    String editPerson = extras.getString("person"); 
    mDbHelper.updatePerson(rowId, editPerson); 
    } 
    fillData(); 
    break; 
} 
} 

किसी भी मदद के लिए धन्यवाद।

उत्तर

12

सबसे पहले, डीडीएमएस का उपयोग करके अपने स्टैक ट्रेस को देखें, यह आपको बताएगा कि अपवाद किस लाइन पर हो रहा है।

आप अपनी कॉलिंग गतिविधि में क्या कर सकते हैं resultCode के लिए जांच है, और आपके कैली गतिविधि में इसे setResult() का उपयोग करके सेट किया गया है।

उदाहरण के लिए, यदि उपयोगकर्ता वापस परिणाम दबाएगा तो कोड RESULT_CANCELED होगा। यदि यह मामला इरादे से डेटा निकालने का प्रयास नहीं करता है।

+0

आपकी मदद के लिए धन्यवाद। मुझे विश्वास है कि आपको समस्या मिली है, लेकिन मुझे यकीन नहीं है कि इसे कैसे कार्यान्वित किया जाए। मैंने Google की खोज की और मुझे एक ऐसा उदाहरण नहीं मिला जो मेरे परिदृश्य से मेल खाता हो। यहां मैंने जो कार्यान्वित करने का प्रयास किया है, लेकिन त्रुटि अभी भी मौजूद है।

 case ACTIVITY_EDIT: \t switch (resultCode) { \t case RESULT_OK: \t \t Long rowId = extras.getLong("_id"); \t \t if (rowId != null) { \t \t \t String editPerson = extras.getString("person"); \t \t \t mDbHelper.updatePerson(rowId, editPerson); \t \t \t fillData(); \t \t \t break; \t \t } \t } \t break; } 
आपकी सभी मदद के लिए धन्यवाद। – alockrem

2

आप आशय का बंडल तक पहुँचने से पहले एक अगर बयान में अपनी गतिविधि लपेट और resultCode जाँच करना चाहते हैं:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
super.onActivityResult(requestCode, resultCode, intent); 

// Add this line: 
if (resultCode == RESULT_OK) { 
Bundle extras = intent.getExtras(); 
switch(requestCode) { 
case ACTIVITY_CREATE: 

    break; 
case ACTIVITY_EDIT: 

    break; 
} 
} 
} 
-2
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) 
    { 
     // do your code here 
    } 
} 
+1

कृपया पहले अन्य उत्तरों को देखें। यह एक डुप्लिकेट है। –

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