2012-09-03 20 views
6

के लिए अनुरोध कोड के प्रकार startActivityForResult() और उनके उद्देश्य के साथ requestCode के मानों को कृपया किस प्रकार सूचीबद्ध कर सकते हैं? साथ ही, क्या आप setResult पैरामीटर जैसे RESULT_OK पर उपलब्ध समझा सकते हैं और वहां और क्या हैं? कृप्या सहायता करे।startActivityforResult

उत्तर

7

जब आप requestCode >= 0 साथ परिणाम के लिए एक गतिविधि लॉन्च करते हैं, इस कोड को सबसे पहले गतिविधि के onActivityResult() जब दूसरी गतिविधि को लौटा दी जाएगी है finished.You अपने Activity से परिणाम के लिए कई Activity शुरू कर सकते हैं। प्रत्येक मामले में आपको अनुरोध कोड पास करने के लिए startActivityForResult() विधि पर कॉलबैक मिलता है। onActivityResult() में हम यह अनुरोध करने के लिए अनुरोध कोड का उपयोग कर सकते हैं कि हमें किस गतिविधि के लिए कॉलबैक प्राप्त हुआ है। तो Activities से कॉलबैक के बीच अंतर करने के लिए हम विभिन्न अनुरोध कोड का उपयोग करते हैं।

उदाहरण के लिए:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Intent i = new Intent(FirstActivity.this, SecondActivity.class); 
    startActivityForResult(i, 1); 
    Intent i = new Intent(FirstActivity.this, ThirdActivity.class); 
    startActivityForResult(i, 2); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

if (requestCode == 1) { 

    if (resultCode == RESULT_OK) { 
    //Get the result from SecondActivity 
    } 

    } 
else if (requestCode == 2) { 
    if (resultCode == RESULT_OK) { 
    //Get the result from ThirdActivity 
    } 
} 
} 
2

आप जो भी चाहें requestCode में डाल सकते हैं, यह आपके लिए यह जानने के लिए है कि निर्दिष्ट requestCode के साथ आप किस विशिष्ट जानकारी को वापस आने की उम्मीद कर रहे हैं। Activity जिसे कॉल किया जाता है उसे setResult(RESULT_OK) पर कॉल करना चाहिए जब यह पिछले Activity पर जानकारी पास कर लेता है ताकि यह सत्यापित किया जा सके कि यह सही डेटा है और सब कुछ ठीक हो गया है।

1

requestCode आपके ऊपर है। इससे आपको यह पहचानने में मदद मिलेगी कि Activity आपके onActivityResult() विधि में समाप्त हो गया है। इसके परिणामस्वरूप पैरामीटर आपके लिए कम या कम हैं, जब तक कि आप केवल अपनी गतिविधियों के साथ काम कर रहे हों। आप इसे कॉल करने के लिए बुलाए गए गतिविधि के वापसी मूल्य के रूप में सोच सकते हैं।

2

startActivityForResult() में अनुरोध करने के लिए एक आईडी आवंटित करने के लिए उपयोग किया जाता है, ताकि onActivityResult() में इस कोड के साथ अनुरोध की पहचान की जा सके। जैसा अगर किसी onActivityResult() में कोड लिखा है

startActivityForResult(new Intent(A.this, B.class), 1); 
startActivityForResult(new Intent(A.this, C.class), 2); 

अब निम्नलिखित कोड द्वारा एक गतिविधि बी और सी, में दो गतिविधियों शुरू करने के लिए आप में मान्यता प्राप्त कर सकते हैं जो Activity परिणाम वापस आ गया है।

setResult() विधि का परिणाम Intent परिणाम में सेट करने के लिए किया जाता है, और resultCoderesultCode द्वारा हम onActivityResult() बताते हैं कि परिणाम ठीक है, या रद्द किया गया है। Intent में हम परिणाम में सेट हैं, intent.putExtra() विधियों द्वारा कुछ डेटा पास करने के लिए उपयोग किया जा सकता है।

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