我有一个Activity,它使用ViewSwitcher显示加载屏幕,然后显示我的主视图。加载屏幕显示正常,但主视图不可见。它就在那里,因为我的应用程序启动后无法触摸屏幕上的任何内容,但它是不可见的。我需要导航到主屏幕(系统栏仍处于活动状态),然后重新启动应用程序,将其带到前台(使其可见)。
这仅在安装后的第一次打开时发生。我试图手动设置可见性并使用bringToFront()将其置于前台,但在我再次点击应用程序图标之前它一直不可见。
这是我的代码: 我开始加载AsyncTask并在 onPreExecute 中执行此操作:
viewSwitcher = new ViewSwitcher(MainActivity.this);
viewSwitcher.addView(ViewSwitcher.inflate(MainActivity.this, R.layout.splashscreen, null));
setContentView(viewSwitcher);
mv = new MainView(MainActivity.this);
然后在 doInBackground 我完成所有重载并在 onPostExecute 中切换视图如下:
viewSwitcher.addView(mv);
viewSwitcher.showNext();
//I have tried all this:
mv.setVisibility(View.VISIBLE);
viewSwitcher.setVisibility(View.VISIBLE);
viewSwitcher.bringToFront();
mv.bringToFront();
我还尝试在没有内容切换器的情况下正常设置内容视图,但无济于事。就像在异步任务之后UI没有失效一样。我不知道为什么这只会在安装后发生一次,并且每隔一段时间都能正常工作。
答案 0 :(得分:0)
好的,想通了。问题是在加载和访问asyncTask以更新进度期间出错。处理了这个错误,所以加载继续,但这在某种程度上使视图不可见。我把myasyncTask.setProgress()放在runOnUiThread和viola中,加载了视图并按预期显示。