Dialog kemajuan tidak muncul

Saya memiliki dua pemintal, satu bernama masakan dan area lainnya. Saya memanggil Thetask().execute baru pada beban aktivitas dengan "init" sebagai argumen. Dan pemintal harus diatur dari layanan web dengan masakan yang tersedia dan daftar area. (metode untuk itu tidak termasuk di sini). Dan awalnya pemintal akan memilih "Semua" sehingga tampilan daftar "daftar restoran" harus memiliki semua restoran. Dan ketika pengguna mengubah masakan atau area dari spinners, tampilan daftar restoran harus diperbarui dengan dialog kemajuan yang telah ditampilkan. Sekarang masalah saya adalah semua kode berfungsi tetapi dialog kemajuan mulai ditampilkan setelah tampilan daftar diisi dan dialog kemajuan tidak pernah berhenti sampai tombol kembali ditekan. Solusi apa pun untuk ini akan sangat membantu. Terima kasih sebelumnya.

kelas publik Thetask memperluas AsyncTask {

     String flagdopost="",x,y;       
     @Override 
     public void onPreExecute() 
     {   
        pg =new ProgressDialog(Restaurantlistdisplay.this);
        pg.setMessage("fetching info....");
        pg.setIndeterminate(true);
        pg.setCancelable(true);
        Log.i("inside preexecute","in pre execute");
        pg.show();

     }   

     public Void doInBackground(String... params)
     {          
        if(params[0].equalsIgnoreCase("init"))
        {
            tempcuisinenamelist = getCuisines();    
            tempcuisinenamelist.add(0,"All");

            tempareanamelist=getAreanames(cid, sid, cityid);
            tempareanamelist.add(0,"All");

            flagdopost="init";  
            Log.i("inside doinbackground 1st",flagdopost);
        }

        else if(params[0].equalsIgnoreCase(""))
        {
            firequery();
            flagdopost="itemselected";
            Log.i("inside doinbackground 2nd",flagdopost);
        }
        else if(params[0].equalsIgnoreCase("itemclick"))
        {
            //sendid=getRestaurantId(params[1],params[2]);  
            x=params[1];
            y=params[2];
            Log.i("in do in backgroung idforbundle is", Integer.toString(sendid));
            flagdopost="itemclicked";
        }
        return null;                     
     } 

    public void onPostExecute(Void result)
     {       
        if(flagdopost.equalsIgnoreCase("init"))
        {
            ArrayAdapter<String> adaptercuisine=new                           ArrayAdapter<String> (Restaurantlistdisplay.this,android.R.layout.simple_spinner_item,tempcuisinenamelist);
            adaptercuisine.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            ArrayAdapter<String> adapterarea=new ArrayAdapter<String>(Restaurantlistdisplay.this,android.R.layout.simple_spinner_item,tempareanamelist);
            adapterarea.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            area.setAdapter(adapterarea); 
            area.setSelection(0);
            area.setOnItemSelectedListener(Restaurantlistdisplay.this);
            cuisine.setAdapter(adaptercuisine); 
            cuisine.setSelection(0);
            cuisine.setOnItemSelectedListener(Restaurantlistdisplay.this);

        }
        else if(flagdopost.equalsIgnoreCase("itemselected"))
        {
            getResult(str);
            customlist.clear();
            populateReslist();
            //Log.i("inside 1st firequery","list populated"+customlist.toString());

            restaurant.invalidateViews();
            restaurant.setAdapter(new SimpleAdapter(Restaurantlistdisplay.this,customlist,R.layout.customlistrow,new String[] {"Restaurant Name","Area Name"},
                    new int[] {R.id.tvresname,R.id.tvareaname})
                    {
                   @Override      
                   public View getView(int position, View convertView,ViewGroup parent)
                   {           
                       View view =super.getView(position, convertView, parent); 
                       return view;       
                   }  
                 });

         }
        else if(flagdopost.equalsIgnoreCase("itemclicked"))
        {               
            sendid=getRestaurantId(x,y);
            Bundle bundle=new Bundle();
            bundle.putInt("locid",sendid);
            Toast.makeText(getBaseContext(), "locId in dopost new one"+sendid, 10).show();

            Intent resdetail = new Intent(Restaurantlistdisplay.this,Restaurantdetail.class);
            resdetail.putExtras(bundle);
            startActivity(resdetail);

        }   
         pg.dismiss();
     }  
 }

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) 
{
    switch(arg0.getId())
    {
        case R.id.spncuisine:                                           asynctaskflag="";
                if(cuisine.getSelectedItem().toString()!="All")
                                {
                            cuisineval=cuisine.getSelectedItem().toString();
                        }
                else
                {
                    cuisineval="*";
                }
                new Thetask().execute(asynctaskflag,null,null);
                break;

        case R.id.spnarea:                  
                asynctaskflag="";
                if(area.getSelectedItem().toString()!="All")
                {
                    areaval=area.getSelectedItem().toString();
                }
                else
                {
                    areaval="*";
                }
                new Thetask().execute(asynctaskflag,null,null);
                break;
    }   

}
public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}
}

//Kode getCuisines() di bawah ini sesuai permintaan Anda semua. C jika itu dapat membantu

public List<String> getCuisines()
 {
        String list = null;
        cuisinelist=new ArrayList<String>();
    try
    {
       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
       request.addProperty("str", //here goes query to fetch data from table of </br>cuisines);   
       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);      
    HttpTransportSE aht = new HttpTransportSE(URL);     
    aht.debug = true;
    aht.call(SOAP_ACTION, envelope);
    SoapPrimitive results = (SoapPrimitive)envelope.getResponse();
        list=results.toString();
      }
      catch (SocketException ex)
      {  
    ex.printStackTrace();
      }
     catch (Exception e)
     {         
    e.printStackTrace(); 
      } 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
try
{
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document dom = builder.parse(new InputSource(new StringReader(list))); 
    Element root = dom.getDocumentElement();
    NodeList items = root.getElementsByTagName("row");
    for (int i=0;i<items.getLength();i++)
    {
       Node item = items.item(i);
       NodeList properties = item.getChildNodes();
       for (int j=0;j<properties.getLength();j++)
       {
            Node property = properties.item(j);
        String name = property.getNodeName();
        if (name.equalsIgnoreCase("typeName"))
        {
                   cuisinelist.add(property.getFirstChild().getNodeValue());
        }                       
        }
    }
    return cuisinelist;         
  }
  catch (Exception e) 
  {
    throw new RuntimeException(e);
      } 

}


person samir    schedule 02.02.2012    source sumber
comment
tolong kode pos untuk getCuisines().   -  person Akram    schedule 02.02.2012
comment
@Akki memposting kode untuk getcuisines. tolong lihat. Tapi sobat saya pikir ketika kontrol menuju ke item yang dipilih dari spinner segera setelah spinner masakan populasi, Task().execute() baru dijalankan lagi jadi mungkin dialog kemajuan lagi perlu dimuat.   -  person samir    schedule 03.02.2012


Jawaban (1)


coba ini di postexecute

 if(pg.isShowing())
{
pg.dismiss();
}

dan Apa itu getCuisines();? apakah Anda memiliki ProgressDialog di sana?

jika aktivitasnya bersarang maka coba

  ProgressDialog dialogGoog = new ProgressDialog(getParent());
person Shahzad Imam    schedule 02.02.2012
comment
terima kasih atas sarannya akan dilaksanakan pada hari Senin karena tidak dapat membuat kode di rumah. Perusahaan tidak mengizinkan hal itu. getcuisines adalah metode yang mendapatkan daftar masakan restoran. Ia menggunakan metode ksoap layanan web untuk mendapatkan detailnya dan mengembalikan daftar array masakan seperti kontinental, Italia, Cina, dll. Dan masalahnya adalah saya mengisi adaptor dan mengatur adaptor sehingga mungkin kontrol segera melompat ke acara onItemselected pemintal. Dan logika if pg.isshowing yang Anda sarankan mungkin tidak berfungsi tetapi izinkan saya mencobanya. Terima kasih - person samir; 03.02.2012
comment
mencobanya sobat masih mendapatkan keluaran yang sama, dialog kemajuan muncul setelah tampilan daftar terisi. Saran lebih lanjut akan sangat membantu .. - person samir; 07.02.2012