我收到一些錯誤。我知道是什麼問題,但我不知道如何解決。Android Spinner上的多個AsyncTasks問題
我有4個微調。每個微調者都涉及一個asynctask。簡而言之,當我在spinner1上選擇一個項目時,執行第二個填充spinner2的asynctask(選擇的項目添加到第二個asynctask作爲參數)繼續以這種方式。
但是在第一個asynctask結束之前,spinner2無法填充。在這種情況下,我得到錯誤。如何解決它?第一項任務完成時如何製作第二項任務?
這是代碼;
首要任務
public class ilceDoldur extends AsyncTask<String[],String[],String[]>{
@Override
protected String[] doInBackground(String[]... params) {
SoapObject request = new SoapObject(NAMESPACE, "ILCEGetir");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call("http://tempuri.org/ILCEGetir", envelope);
SoapObject response = (SoapObject) envelope.getResponse();
ilceList = new String[response.getPropertyCount()];
for(int i=0;i<response.getPropertyCount();i++){
ilceList[i] = response.getPropertyAsString(i).toString().trim();
}
}
catch (Exception e) {
e.printStackTrace();
}
return ilceList;
}
protected void onPostExecute(String[] ilceList){
ilceSpinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> ilce_adapter = new ArrayAdapter<String>(NormalAnasayfa.this,android.R.layout.simple_spinner_item, ilceList);
ilce_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ilceSpinner.setAdapter(ilce_adapter);
kontrol=true;
}
}
第二個任務
public class semtDoldur extends AsyncTask<String,String[],String[]>{
@Override
protected String[] doInBackground(String... ParamIlce) {
PropertyInfo ilce = new PropertyInfo();
ilce.name= "ilce";
ilce.setValue(ParamIlce);
ilce.type = PropertyInfo.STRING_CLASS;
SoapObject request = new SoapObject(NAMESPACE, "SEMTGetir");
request.addProperty(ilce);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut=request;
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call("http://tempuri.org/SEMTGetir", envelope);
SoapObject response = (SoapObject) envelope.getResponse();
semtList = new String[response.getPropertyCount()];
for(int i=0;i<response.getPropertyCount();i++){
semtList[i] = response.getPropertyAsString(i).toString().trim();
}
}
catch (Exception e) {
e.printStackTrace();
}
return semtList;
}
protected void onPostExecute(String[] semtList){
semtSpinner = (Spinner) findViewById(R.id.spinner2);
ArrayAdapter<String> semt_adapter = new ArrayAdapter<String>(NormalAnasayfa.this, android.R.layout.simple_spinner_item, semtList);
semt_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
semtSpinner.setAdapter(semt_adapter);
kontrol=true;
}
}
的onCreate()
new ilceDoldur().execute();
if(kontrol==true){
kontrol=false;
ilceSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
secilenIlce = ilceSpinner.getSelectedItem().toString().trim();
new semtDoldur().execute(secilenIlce);
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
}
編輯: 我從我的web服務數據和填充spinner1。哪裏可以得到數據(spinner1選擇的項目)?和我在哪裏填充spinner2執行第二個任務?
什麼是你得到的錯誤?請添加您的Logcat – thepoosh 2012-08-09 07:28:57
我寧願調用該錯誤,但它不是錯誤。第二個微調不填充。我在spinner1上選擇一個項目,但spinner2不填充。 – 2012-08-09 07:35:49
是從網絡服務中下載的數據嗎? – 2012-08-09 09:43:10