web-dev-qa-db-ja.com

アクティビティを切り替えると白い画面が表示されます

あるアクティビティから別のアクティビティに移動すると、白い画面が2秒間表示されます。私はこのコードを使用しています:

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

この問題を解決するにはどうすればよいですか?

15
androidXXX

次のようなテーマを作成します。

<style name="YourTheme" parent="YourParentTheme">
    <item name="Android:windowDisablePreview">true</item>
</style>

このテーマを2番目のアクティビティに適用します

このリンクの詳細: http://www.tothenew.com/blog/disabling-the-preview-or-start-window-in-Android/

20
Ziwei Zeng

ActivityOneからActivityTwoに切り替えている間、ActivityTwo onCreateメソッドが実行されるまで、デフォルトの背景(白/黒の画面)が表示されます。 onCreateで重い操作を行わないことをお勧めします。この問題を修正するには、以下に示すように、透過的な背景をActivityTwoに設定します。

<style name="YourTheme" parent="YourParentTheme">
<item name="Android:windowBackground">@Android:color/transparent</item>
</style>

テーマの上に設定されたマニフェスト

<activity
            Android:name=".ActivityTwo"
            Android:theme="@style/YourTheme">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />
                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>
2
Rocky

アクティビティにさらに複雑なレイアウトが含まれている場合は、フラグを設定した後にfinish()を使用しないでください。代わりに_FLAG_ACTIVITY_CLEAR_TOP and _TASK_を使用すると、問題が解決します。これで問題は解決しました。

Intent intent = new Intent(this, SecondActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.l̥FLAG_ACTIVITY_CLEAR_TOP ); startActivity(intent);

または単に以下のように使用します

Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);

2
Sagar

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);を呼び出す前に、startActivity(intent);を追加してみてください

Intent intent = new Intent(this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
1
Jas

アクティビティに、より複雑なレイアウトが含まれている/大きなサイズの背景画像が含まれている場合は、レンダリングが必要になるため、その白いページのみが表示されます。その時間遅延を取り除きたい場合は、小さいサイズのpng画像と明確なレイアウトデザインを使用してください。

1
Nandhu

FLAG_ACTIVITY_NEW_TASKを使用すると、白い画面が表示されます。これを使用するように削除してください。それが動作します。

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)を追加してみてください

0
Nikhil bohra

finishを使用します。アクティビティをクリアする場合は、押し戻すとアクティビティのスタックがありません。

したがって、クリアしてからfinishを使用します。それ以外の場合は、使用しないでください。

0
Sam Patel

次のアクティビティに移動するには、フラグを使用します

Intent intent = new Intent(this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
0