2012-01-11 13 views
1

私は接続に依存するアプリケーションを持っていますそれは多くのアクティビティを持っています。接続がダウンし、実行中のアクティビティに関係なく接続が戻るかユーザーが終了するまで、プログレス・リコネクション・ダイアログを表示する必要があります。アクティビティの上にダイアログを維持する

public void xmppConnectionClosed() { 
      connectionError = true; 
      onScreenActivity.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        initiateReconnectionDialog(onScreenActivity); //onScreenActivity is singlton represent the current activity 
        reconnectionDialog.setMessage(onScreenActivity 
          .getString(R.string.reconnectionDialogReconnecting)); 
        reconnectionDialog 
          .setStatus(ReconnectionStatus.RECONNECTING); 
        // setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); 
         reconnectionDialog.show(); 

       } 

      }); 

     } 

そののonCreate

protected void onCreate(android.os.Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (connectionError) { 
      initiateReconnectionDialog(this); 
      reconnectionDialog.show(); 
     } 
    } 

問題は、今私が持っている場合のアクティビティAが活動を開始していること:私はすべての私の活動の親であるBaseActivityで接続失敗イベントをインターセプトし、この方法を作りましたBデバイスを回転させると、アクティビティAのonCreateが呼び出され、ダイアログを表示しようとすると、フォアグラウンドのアクティビティではないという例外がスローされます。 このような状況に対処する方法はありますか?

答えて

1

これは、バックグラウンドサービスから呼び出さなければならないダイアログのように聞こえます。アクティビティが実行されているかどうかは気にしないので、これが該当する必要があります。アクティビティはサービスを開始する必要があり、バックグラウンドで実行されます。

+0

この音は良いですが、デバイスを回転させたときのダイアログの表示に関する問題 –

+0

方向が変わるとダイアログがすべてのビューを上書きします。あなたのドキュメントをお読みください。 – JoxTraex

+1

バックグラウンドサービスはダイアログを開始しているため、アクティビティを必要とせず、そのアクティビティの方向にも影響しません。 – JoxTraex

0

onRetainNonConfigurationInstanceでダイアログを閉じることができます。アクティビティの作成時にダイアログを再作成することができます。

関連する問題