我在主要版面上使用“include”。它们中的每一个都是RelativeLayout,需要附加OnClick侦听器,并更新一些相关的信息。 所以我试图通过以下方式来做到这一点:
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);”在我执行上述命令后。所有这些命令都必须在“setContentView(R.layout.allobjects);”之后编写。
我该如何处理这种情况?我是否必须使用onPreExecute并实现AsyncTask?
答案 0 :(得分:0)
是的,AsyncTask是在执行这些命令时显示加载对话框的好方法。
<强>更新强>
在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();