2012-06-02 2 views
0

вот код, в настоящее время отображается прогрессдиалог, если пользователь нажимает кнопку, а «кольцо» не вращается. но если я вставляю код progreedialog в onCreate, «кольцо» будет вращаться после загрузки экрана. помогите мне найти, где пошло не так ..progressdialog не вращается

StaffChoice класс:

public class StaffChoice extends Activity { 

    @Override 
protected void onCreate(Bundle savedInstanceState) 
{     
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.staffchoices); 
} 

public void onClickCategory(final View view) 
{  
    final ProgressDialog progress=ProgressDialog.show(this, "Please wait", "Loading ...", true); 

    new Thread() 
    { 
     public void run() 
     {    
      Intent intent = new Intent(view.getContext(), Category.class); 
      startActivity(intent); 
      progress.dismiss();      
     } 
    }.start(); 
} 
} 

OnCreate в классе Категория:

super.onCreate(savedInstanceState); 
     setContentView(R.layout.category); 
     final ListView lvCategory = (ListView) findViewById(R.id.lvCategory); 

     SoapObject Request = new SoapObject (NAMESPACE, METHOD_NAME); 
     SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

     soapEnvelope.dotNet = true; 
     soapEnvelope.setOutputSoapObject(Request); 

     AndroidHttpTransport aht = new AndroidHttpTransport(URL); 

     try 
     { 
      aht.call(SOAP_ACTION, soapEnvelope); 
      SoapObject resultString = (SoapObject) soapEnvelope.getResponse(); 

      final String[] strCategory = new String[resultString.getPropertyCount()]; 

      for(int i =0; i<resultString.getPropertyCount(); i++) 
      { 
       SoapObject array = (SoapObject) resultString .getProperty(i); 
       strCategory[i] = array.getProperty(0).toString(); //get category 
      } 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strCategory); 
      lvCategory.setAdapter(adapter); 

      lvCategory.setOnItemClickListener(new OnItemClickListener(){ 
       @Override 
       public void onItemClick(AdapterView<?> arg0, final View arg1, int arg2, long arg3) {      
         Intent intent = new Intent(arg1.getContext(), CategoryGames.class); 
         startActivity(intent); 
       }    
      }); 
     } 

     catch(Exception e) 
     {    
      String[] items = { "No Internet Connection, Please try again" };    
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); 
      lvCategory.setAdapter(adapter); 
     } 
+0

откуда у назвали метод onClickcategory()? – Eight

+0

из xml ... android: onClick = "onClickCategory" – melvintcs

+0

у вас нет никакой задачи в методе 'run()' и запуске потока и идет в обработчик ... –

ответ

1

вместо ниток, я использую AsyncTask в новом намерении

protected void onCreate(Bundle savedInstanceState) 
    { 
     new loadPage().execute(null, null, null);    
    } 

    public class loadPage extends AsyncTask<String, Integer, Void> { 

     private ProgressDialog pdia; 

     @Override 
     protected void onPreExecute(){ 
      super.onPreExecute(); 
      pdia = new ProgressDialog(AppDetails.this); 
       pdia.setMessage("Loading..."); 
       pdia.show(); 
      } 
     @Override 
     protected Void doInBackground(String... arg0) { 
     // TODO Auto-generated method stub 
     } 

     @Override 
     protected void onPostExecute(Void unused) { 
     pdia.dismiss(); 
     } 
     } 
1

вы должны поставить задачу или времени в потоке, а поток выполняется, прогресс Dialog показывается, но когда Task/Time - это полный прогрессDialog, увольте.

Его лучше использовать AsynTask in Android, а не Thread.

 new Thread() 
      { 
       public void run() 

      { 
       try{ 
         Thread.sleep(10*1000); //10 seconds 

        }catch(Exception e){ 
      } 
       handler.sendEmptyMessage(0);   
      } 


      }.start(); 
+0

, поэтому пользователям нужно ждать 10 секунд для 'fake- вращаясь ", прежде чем они смогут перейти к следующему экрану? Я думаю, это хорошее решение. спасибо хотя :) – melvintcs

+0

его просто пример, сколько раз вы хотите подождать следующего экрана. И если вы не ждете, тогда не нужно ставить поток. –

+0

на самом деле он получает данные из Интернета, поэтому «период ожидания» очень зависит от самого интернет-соединения :) – melvintcs

Смежные вопросы