【发布时间】:2013-01-29 09:52:49
【问题描述】:
所以我已经在这里工作了 2 天,但仍然无法正常工作。 我已经尝试过实现可运行的异步任务的解决方案,但它似乎永远无法与我的代码一起使用。也许我用错了方法……
无论如何,我已经编写了以下代码。当我创建这个活动时,我想显示一个带有文本“正在加载”的进度对话框。问题是,您不能从另一个线程更新 GUI 元素。那就是我卡住的地方。 希望你能帮帮我!
PS:我需要 ProgressDialog 的原因是因为这条线
ArrayList<String> genres = MysqlHandler.getAllGenres();
加载可能需要相当长的时间。我还有一些其他活动需要做同样的事情,加载可能需要 5 秒。
public class GenreActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_genre);
try {
ArrayList<String> genres = MysqlHandler.getAllGenres();
LinearLayout layout = (LinearLayout) findViewById(R.id.AllGenreLayout);
for(int i = 0; i < genres.size(); i++)
{
Button myButton = new Button(this);
myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.yellow_button));
myButton.setTextAppearance(this, R.style.ButtonText);
myButton.setText(genres.get(i));
myButton.setOnClickListener(this);
layout.addView(myButton);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
【问题讨论】:
-
发布您的 asyncTask 代码以及您调用 asyncTaskObj.execute() 的位置。
-
我删除了它,因为为我的所有课程制作任务并不是很漂亮。因为progressdialog 只需要在我运行try-catch 中的代码时显示。但是,如果您认为有必要,我可以再次创建 asyncTask 并将其发布
标签: android multithreading android-asynctask progressdialog runnable