一项活动,两项意见。我如何以及在何处充气第二视图?

时间:2013-03-07 00:23:51

标签: android xml layout-inflater

我有一个可以显示两种不同布局的活动。两种布局都是预定义的(XML)。基本上,如果满足条件,则应显示布局A.如果条件失败,则应显示布局B.

布局A是一种简单的线性布局 - 可以这么说,它是我的主要“形式”。 布局B是一个简单的相对布局 - 它是一个占位符,直到可以下载一些数据。下载数据(并发送通知)后,我想删除布局B并显示布局A.

我尝试在我invalidate()的{​​{1}}方法中调用布局B上的onResume()方法,但这不起作用。

我不确定我应采取什么方法,在(1)“正确”切换布局的位置,以及(2)我应该如何显示它。我假设我需要在满足条件时给布局A充气,但我不是百分之百确定。

编辑: 剪断了我的Activity方法:

onCreate()

2 个答案:

答案 0 :(得分:2)

除非您有理由不使用背景Thread,否则我建议使用AsyncTask并使用进度条。在获取数据之前,使用虚拟Layout作为占位符的成本会更低。而且你说它不会被使用,只有1%的时间。在我看来,似乎是浪费

 public class TalkToServer extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected void onProgressUpdate(String... values) {
            super.onProgressUpdate(values);

        }

        @Override
        protected String doInBackground(String... params) {
        //do your work here
            return something;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
               // do something with data here-display it or send to mainactivity
    }

您显然对未来的访问者了解AsyncTaskHere are the Docs,并且有一个使用ProgressDialog的示例。

注意

由于它不是内部类,如果您要从那里显示Context,则只需将AsyncTask传递给ProgressDialog的构造函数。

答案 1 :(得分:0)

以下是类似问题的链接 Inflate a view / layout into another layout?并且有一个可能的解决方案