【问题标题】:black screen switching between activity活动之间切换黑屏
【发布时间】:2010-09-13 09:03:51
【问题描述】:

我正在使用我的一项活动中的以下代码来启动另一项活动

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();

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

【问题讨论】:

  • 这种情况下不要显示ProgressDialog,不会有黑色滑屏效果。
  • @Pentium10 当我的应用程序根据选定的“ApplicationName”变量从 Internet 下载数据时,我需要显示 progressDialog。
  • 我确实删除了 progressDialog 但无济于事。我在其他测试应用程序中也看到了相同的行为。
  • 在启动应用程序之间设置进度是个坏主意。您需要在执行下载的对话框中实现进度对话框,但在切换活动之间。此外,如果您有一个简单的数据下载界面,您应该考虑使用 Service 而不是 Activity。

标签: android progressdialog


【解决方案1】:

这对我有用:

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);

【讨论】:

  • 对于普通代码,您总是使用代码 sn-ps。代码片段只能用于 HTML 或 javascript 或其他可以在浏览器中运行的代码。您不能在浏览器中运行 Java。以后使用普通代码块...这次我会为您编辑您的答案并修复格式等,但以后请不要再这样做了。这不是我第一次告诉你这件事......
【解决方案2】:

您的代码有点混乱和不清楚。请指定目标。无论如何,我看到了一些东西:

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

new Intent (this, landingPage.class);

2- 您无需创建 Bundle 即可将字符串添加到意图。

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

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

3- 您确定要从其父项访问活动登录页面吗?我假设landingPage 在某处被实例化。我觉得这是一个糟糕的方法。如果我错了,请举例说明。

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

【讨论】:

  • Well Maragues 1-我将 'getApplicationContext()' 更改为 'this' 2-使用 viewIntent.putExtra("ApplicationName", a_Bean.getApplicationName ());而不是存储在捆绑包 3 中,更改为 startActivity & bp 是用于处理和其他功能的类的对象,但我仍然没有结果。
【解决方案3】:

我通过将 DataLoader(即从 Internet 加载数据的方法)从被调用类(即我的landingPage.class)中删除到调用者类来解决了上述问题。

【讨论】:

    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多