我有一个可以显示两种不同布局的活动。两种布局都是预定义的(XML)。基本上,如果满足条件,则应显示布局A.如果条件失败,则应显示布局B.
布局A是一种简单的线性布局 - 可以这么说,它是我的主要“形式”。 布局B是一个简单的相对布局 - 它是一个占位符,直到可以下载一些数据。下载数据(并发送通知)后,我想删除布局B并显示布局A.
我尝试在我invalidate()
的{{1}}方法中调用布局B上的onResume()
方法,但这不起作用。
我不确定我应采取什么方法,在(1)“正确”切换布局的位置,以及(2)我应该如何显示它。我假设我需要在满足条件时给布局A充气,但我不是百分之百确定。
编辑:
剪断了我的Activity
方法:
onCreate()
答案 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
}
您显然对未来的访问者了解AsyncTask
但Here are the Docs,并且有一个使用ProgressDialog
的示例。
注意强>
由于它不是内部类,如果您要从那里显示Context
,则只需将AsyncTask
传递给ProgressDialog
的构造函数。
答案 1 :(得分:0)
以下是类似问题的链接 Inflate a view / layout into another layout?并且有一个可能的解决方案