2012-03-10 11 views
0

私はメインレイアウトに "include"を使用しています。それらのそれぞれは、関連するOnClickリスナーを必要とするRelativeLayoutであり、関連するいくつかの情報を更新します。 「setContentView(R.layout.allobjects);」それは後に時間がかかりすぎるということである"setContentView"が呼び出された後にコマンドを実行する方法

setContentView(R.layout.allobjects); 
    ObjectListeners objectListeners = new ObjectListeners(objects); 
    for(int i=0;i<1;i++) 
    {   
     RelativeLayout objectBoxRelativeLayout = (RelativeLayout)findViewById(R.id.object1 + i);    
     objectBoxRelativeLayout.setOnClickListener(objectListeners.GetObjectListener(i)); 
     SomeObject currentObject = this.objects.get(i); 
     Object viewObject = findViewById(R.id.object1 + i); 
     this.setObjectView(viewObject, currentObject);   
    } 

問題: は、だから私は、単純でそれを行うには試してみましたコマンドを実行すると、アプリケーションは読み込みが完了するまで黒い画面を表示します。 さらに、私は "setContentView(R.layout.allobjects);"を使用します。私は上記のコマンドを実行した後。これらのコマンドはすべて、 "setContentView(R.layout.allobjects);"の後に記述する必要があります。

どうすればこのような状況に対処できますか? onPreExecuteを使用してAsyncTaskを実装する必要がありますか?

答えて

0

はい、AsyncTaskは、これらのコマンドが実行されている間に読み込みダイアログを表示するのに適しています。

UPDATE:

あなたonCreate()機能の下で、このクラスを追加します。

private class MyTask extends AsyncTask<Void, Void, Void> { 

      private ProgressDialog dialog; 
      private Context context; 

      public MyTask(Activity activity) { 
       context = activity; 
       dialog = new ProgressDialog(context); 
      } 

      protected void onPreExecute() { 
       dialog.setTitle("Loading..."); 
       dialog.setMessage("Loading..."); 
       dialog.show(); 

      } 

      @Override 
      protected Void doInBackground(Void... params) { 
      //do your code here in background 


      protected void onPostExecute(Void res) { 
       dialog.dismiss(); 

      } 
} 

は、このようonCreate()内のタスクを使用します。

MyTask mt = new MyTask(this); 
    mt.execute(); 
+0

感謝を。それ以外のオプションはありませんか?あなたはそれを行うためのいくつかのコードを表示することはできますか? – ohadinho

+0

スレッドを使用する別の方法がありますが、asynctaskは良い方法です。コードを表示するために私の答えを編集します –

+0

ありがとう! – ohadinho

関連する問題