ちょうどあなたのコードスニペットに基づいて、それはあなたが表示されますAsyncTaskの中であなたのProgressDialog.show
を入れて何を提案することができますAsyncTaskを間違って使用しています。
for(int i=0;i<7;i++){
((LinearLayout) Global.a.findViewById(R.id.scrollLayout)).addView(new Column(Global.a,i));
}
これは決してAysncTaskで行うべきではありません。もしそれがdoInBackgroundであれば、他のどこでも(onPreExecute()、onPostExecute()またはonProgressUpdate()を実行してUIスレッドでforループを実行していれば、別のスレッドからUIを変更しています)
最善の解決策は、あなたがすでにそれでそれに追加するビューのXMLファイルを作成することです。けれども、あなたがAsyncTaskにビューを追加することで意図しているならば、あなたはそのを行う方法を変更する必要があります。
private SomeName extends AsyncTask<Void,Column,Void>{
private Linearlayout layout;
protected void onPreExecute(Void... unused){
//UI thread
//show dialog
layout = (LinearLayout) Global.a.findViewById(R.id.scrollLayout);
}
protected void doInBackground(Void... unused){
//Background thread
for(int i=0;i<7;i++){
//create the view in the background
Column column = new Column(Global.a,i);
//call publish progress to update the UI
publishProgress(column);
}
}
protected void onProgressUpdate(Column... column){
//UI thread
//Update the UI
layout.addView(column[0]);
}
protected void onPreExecute(Void... unused){
//UI thread
//dismiss dialog
}
}
あなたは非常にタンクします。 –