2011-02-08 16 views
13

प्रत्येक विधि निष्पादन() के लिए एकाधिक इनपुट पैरामीटर। मैं excute (का वर्णन) AsyncTask के एंड्रॉयड साइट पर पढ़ लिया है:AsyncTask

public final AsyncTask<Params, Progress, Result> execute (Params... params)

लेकिन मेरी परियोजना के भीतर, मैं इस तरह कोड को पढ़ लिया है:

private static final int JSON = 0; 
private static final int NAME = 1; 
@Override 
protected String doInBackground(String... strData) {  
     FileOutputTask task = new FileOutputTask(context); 
     task.execute(strData[JSON], strData[NAME]); 
} 

किसी ने मुझे बता सकते हैं निष्पादन() विधि के लिए 2 इनपुट पैरामीटर क्यों हैं?

विनिर्देश के अनुसार, केवल एक इनपुट पैरामीटर होना चाहिए।

अग्रिम धन्यवाद!

उत्तर

13

Params... paramsParams[] params के रूप में पढ़ें। आप जितना चाहें उतने पैराम भेज सकते हैं।

+0

doInBackground() का आविष्कार करते समय कोई पैराम [] पैरा कैसे एक्सेस करेगा? – Cole

+3

इसे मिला: एकाधिक डिनबैकग्राउंड (स्ट्रिंग ... पैराम्स) गुजर रहा है: task.execute (यूरी, उपयोगकर्ता नाम, पासवर्ड, आदि ...); प्राप्त करना: वापसी लॉग इन करें .getResponseXML (पैराम्स [0], पैराम्स [1], पैराम्स [2], आदि ...); डुह – Cole

45

यहां बताया गया है कि मुझे इसे एकाधिक पैरामीटर पारित करने के लिए कैसे मिला। बोरीस के वर्णन के रूप में आप इसे कर सकते हैं, लेकिन यदि आप विभिन्न प्रकारों को पार करते हैं तो क्या होगा?

सबसे पहले, सामान्य तौर पर अपने AsyncTask बनाने के लिए, लेकिन यह के भीतर, एक निर्माता बनाने: अब

private class StartTask extends AsyncTask<Context, Void, Boolean> 
    { 
     private ProgressDialog progress; 
     private String strAction=""; 

     public StartTask(ProgressDialog progress, String Action) 
     { 
      this.progress = progress; 
      this.strAction = Action; 
     } 
    } 

, आपके घटना या कुछ और पर, जब आप कार्रवाई शुरू करने के लिए आप अपने AsyncTask और पास फोन चाहते हैं जितना चाहें उतने पैरामीटर।

ProgressDialog progress = new ProgressDialog(this); 
    progress.setMessage("Loading..."); 
    String strAction = "this_is_a_string"; 
    new StartTask(progress, strAction).execute(this); 

आप देख सकते हैं कि "StartTask" बुला और constuctor पैरामीटर प्रदान करने के अब StartTask वर्ग के भीतर चर आवंटित करेगा।

+0

दिलचस्प चीजें जो मुझे कहना चाहिए – kirtan403