4

アクティビティの1つから以下のコードを使用して、別のアクティビティを開始しています

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 の後、黒い画面が表示され、新しいアクティビティが表示されます。黒い画面が表示されている間にプログレスダイアログが表示されるようにすることはできますか??

4

3 に答える 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);
于 2015-05-05T05:22:35.967 に答える
1

あなたのコードは少し混乱していて不明瞭です。目標を指定してください。とにかく、私が見るいくつかのこと:

1- getApplicationContext()を使用しないでください。アクティビティはそれ自体がコンテキストであるため、次を使用することをお勧めします。

new Intent (this, landingPage.class);

2-インテントに文字列を追加するためにバンドルを作成する必要はありません。

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

とにかく、あなたの活動を回すと、アプリケーションの名前は私には恐ろしい考えのように思えます。アクティビティ全体でアプリケーションの名前が本当に必要な場合は、アプリケーションの中心点としてApplicationクラスを作成します。アーキテクチャを再検討することを強くお勧めします。

3-父親からアクティビティlandingPageにアクセスしてもよろしいですか?LandingPageはどこかでインスタンス化されていると思います。これはひどいアプローチだと思います。私が間違っている場合は、例を挙げてください。

残りのコードとあなたの正確な質問については、私はそれに答えることができません、私は進行状況ダイアログを操作していませんが、「bp」変数が何であるかさえわかりません、そして私が言ったように、あなたはすべきですいくつかの点を明確にして、もう一度質問してみてください。

于 2010-09-13T09:24:03.307 に答える
1

呼び出されたクラス(つまり、私のlandingPage.class)から呼び出し側クラスへのDataLoader(つまり、インターネットからデータをロードするメソッド)を削除することで、上記の問題を解決しました。

于 2010-09-22T09:17:34.313 に答える