0

所以我有以下代码和一个问题:它应该加载一个应该说“正在下载数据库......”的布局(动态添加到布局中)但是我得到一个白屏,直到数据库被更新然后它只是继续add_categories_layout(0) 并且工作正常。

我如何让它向我展示第一个布局?

受保护的无效 onResume(){

    super.onResume();
    setContentView(R.layout.home_screen_layout);
    SF = (LinearLayout) findViewById(R.id.SF);
    p_db_adapter = new DBAdapterProducts(getApplicationContext());
    c_db_adapter = new DBAdapterCategories(getApplicationContext());
    add_downloading_DB_layout();

    new UpdateDB().execute(CATEGORY_URL, PRODUCTS_URL, TIMESTAMP_URL_CATEGORIES, TIMESTAMP_URL_PRODUCTS);       
    while(DBupdated == false){}
    add_categories_layout(0);

}

4

4 回答 4

0

您应该放入setContentViewonCreate()onCreateView()

我们还可以看到布局的动态添加吗?

于 2013-08-13T14:27:00.897 回答
0

在 onResume 完成之前它不会绘制屏幕,​​并且 onResume 在 DBUpdated 为真之前不会完成(此时布局被交换)。

于 2013-08-13T14:29:05.083 回答
0

通常,您在oncreate()方法中设置内容视图。那里可能有代码导致它不起作用。如果您没有 Oncreate 方法,请制作一个并将此代码复制/粘贴到其中。

于 2013-08-13T14:29:43.570 回答
0

您可以放入add_categories_layout(0);您的onPostExecute()AsyncTask因为它在UI Thread. 因此,当您的任务完成时,它将运行此方法并onResume()可以完成所需的操作。如果您AsyncTask是内部类,那么您将可以访问Activity方法和成员变量。如果它是一个单独的文件,那么您只需将您的引用传递Activity给它即可调用该方法。

如果您需要,这里有几个答案可以帮助您。

正如其他人所说,通常setContentView()这样做是onCreate()为了确保它是首先运行的事情之一,但这不应该是一个问题。但是,除非您有理由将其放入onResume().

于 2013-08-13T14:31:42.457 回答