如何在调用“setContentView”后执行命令

时间:2012-03-10 17:06:24

标签: android android-layout android-intent

我在主要版面上使用“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?

1 个答案:

答案 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();