मेरे पास स्टार्टअप पर निष्पादित होने वाली गतिविधि के लिए एक async कार्य है। यदि उपयोगकर्ता मैन्युअल रूप से उस स्थान को चुनता है जिसमें url में एक मान शामिल होता है जो asynctask के पैरामीटर के रूप में पास किया जाता है, और यदि उपयोगकर्ता किसी स्थान को निर्धारित नहीं करता है, तो async कार्य एक डिफ़ॉल्ट url का उपयोग करता है। मेरी समस्या यह है कि अगर कोई पैरामीटर निर्दिष्ट नहीं किया गया तो मैं अपने कोड पर url[0] कॉल नहीं कर सकता। क्या यह जांचने और देखने का एक तरीका है कि क्या एक पैरामीटर को एसिंक्स कार्य में पारित किया गया था? नीचे मेरा प्रयास है। मैंने url[0].isEmpty() और url[0] == null कोशिश की है, लेकिन दोनों मुझे IndexOutOfBounds त्रुटि देते हैं।

private class CallDestination extends AsyncTask<String, Void, JSONObject>{
        protected JSONObject doInBackground(String...url){

            String MYURL = "";

            if(url[0].isEmpty()){
                MYURL = "http://thevisitapp.com/api/destinations/read?identifiers=10011";
            } else{
                MYURL = "http://thevisitapp.com/api/destinations/read?identifiers=" + url[0];
            }
            //TODO make this dynamic as it's passed in from other activity through intent


            HttpRequest request = new HttpRequest();
            return request.getJSONFromUrl(MYURL);
}
1
Rafa 20 नवम्बर 2015, 03:54

3 जवाब

सबसे बढ़िया उत्तर

यदि यह शून्य है, तो जाँच करने के लिए if(url.length ==0) कोशिश करें!

1
Joel Min 20 नवम्बर 2015, 00:56

आप जाँच सकते हैं कि क्या कोई पैरामीटर प्रदान किया गया है या नहीं इस तरह से:

if(url == null)

आपको if(url[0].length == 0) चेक करने पर ArrayIndexOutOfBoundsException मिलता है, क्योंकि url null है, जिसका मूल अर्थ है कि सरणी में 0 तत्व हैं, जिसका अर्थ है कि आप एक्सेस नहीं कर सकते हैं url[0] जैसा कि यह माना जाएगा कि सीमा से बाहर है।

1
Mohammed Aouf Zouag 20 नवम्बर 2015, 01:07

क्या आप जानते हैं कि String... url String... एक सरणी है? इसलिए, आप कई स्तर के चेक लागू कर सकते हैं:

  1. जांचें कि क्या url खाली है:

    if(url.length() == 0){
        //error, no URL given
    }
    
  2. जांचें कि क्या url का मूल्य है, लेकिन अशक्त:

    if(url[0] == null){
        //error, url is null
    }
    
0
ariefbayu 20 नवम्बर 2015, 01:13