0

ここにコードがあります。現在、ユーザーがボタンをクリックすると進行状況ダイアログが表示され、「リング」は回転していません。しかし、progredialog のコードを onCreate の下に貼り付けると、画面が読み込まれると「リング」が回転します。どこが間違っていたのかを見つけるのを手伝ってください..

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();
}
}

Category クラスの 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);
        }   
4

2 に答える 2

1

スレッドの実行中にタスクまたは時間をスレッドに入れる必要があり、進行状況ダイアログが表示されますが、タスク/時間が完了すると進行状況ダイアログが閉じます。

Thread よりもAndroid で AsynTaskを使用することをお勧めします。

     new Thread()
            {
                public void run()

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

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


           }.start();
于 2012-06-02T05:12:41.267 に答える
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();
         }
        }
于 2012-07-14T03:08:15.497 に答える