黑屏在不同活动之间切换

5
我正在使用以下代码从我的一个活动启动另一个活动:
Intent viewIntent = new Intent(getApplicationContext (), landingPage.class);
Bundle b = new Bundle();
b.putString("ApplicationName", a_Bean.getApplicationName());
if (landingPage.getInstanceCount() < 1)
    bp.landingPage_ProgressDialog = ProgressDialog.show(ViewAllApp.this, "Please wait...", "Retrieving data...", true, false);
viewIntent.putExtras(b);
viewIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(viewIntent,10);
Thread background = new Thread(new Runnable() {
    public void run() {
        Progresshandler.sendMessage(handler.obtainMessage());//finishes progressDialog
}});
background.start();

但是在启动活动后,它会显示一个黑屏,然后显示新的活动。我可以在显示黑屏时显示进度对话框吗?


在这种情况下不要显示ProgressDialog,那么就不会有黑色滑动屏幕效果。 - Pentium10
@Pentium10 我需要根据选择的“ApplicationName”变量,在我的应用程序从互联网下载数据时显示进度对话框。 - 100rabh
我已经移除了进度对话框,但没有效果。我在其他测试应用程序中也看到了相同的行为。 - 100rabh
在启动应用程序之间放置进度条是一个不好的想法。您需要在执行下载的应用程序中实现进度对话框,但在切换活动之间。此外,如果您有一个用于下载数据的简单界面,则应考虑使用服务而不是活动。 - Pentium10
请参考:http://stackoverflow.com/questions/5219447/black-screen-during-setcontentview-execution - Felipe
3个回答

5
这对我有用:

这个方法适用于我:

Intent intent = new Intent(LocationGrid.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
overridePendingTransition(0, 0);

1
你总是在普通代码中使用代码片段。代码片段只应用于可以在浏览器中运行的HTML、JavaScript或其他代码。你不能在浏览器中运行Java。以后请使用普通代码块...我会为你编辑答案并修复格式等问题,但请不要再这样做了。这不是我第一次告诉你这个问题了... - Xaver Kapeller

1
我通过将DataLoader(即从互联网加载数据的方法)从被调用的类(即我的landingPage.class)中移除到调用方类来解决上述问题。

1

你的代码有点混乱和不清晰,请明确目标。无论如何,我看到了一些问题:

1- 不要使用getApplicationContext(),一个Activity本身就是一个Context,因此最好使用:

new Intent (this, landingPage.class);

2- 你不需要创建一个 Bundle 来将字符串添加到 Intent 中。

viewIntent.addExtra("ApplicationName", a_Bean.getApplicationName ());

无论如何,将应用程序名称传递给各个活动似乎对我来说是一个可怕的想法。如果您确实需要在整个活动中使用应用程序名称,请创建一个Application类作为应用程序的中心点。我真的建议您重新审查您的架构。

3- 您确定要从其父级访问活动landingPage吗?我假设landingPage在某个地方被实例化。我认为这是一种可怕的方法。如果我错了,请提供示例。

至于代码的其余部分和您的具体问题,我无法回答,因为我没有使用过进度对话框,但我们甚至不知道“bp”变量是什么,正如我所说,您应该尝试再次提出问题并澄清一些要点。


1-我将'getApplicationContext()'更改为'this' 2-使用viewIntent.putExtra("ApplicationName", a_Bean.getApplicationName());代替存储在bundle中 3-更改为startActivity & bp是用于处理和其他功能的类的对象,但我仍然没有结果。 - 100rabh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接