1

CountDownTimerから拡張されたクラスを作成しました。timerが期限切れのときに呼び出すメソッドonFinish()を持っています。タイマーが満了したときにそうCounterTimerでときFinish()メソッド呼び出し開いているアクティビティをすべて終了し、Javaクラスから新しいアクティビティを開く方法

6つの活動がありますが、ユーザーは、任意のactivityにすることができ、私はLoginページにユーザーをリダイレクトする必要があると一緒に、ユーザーにAlert Messageを表示する必要があります。

私はNormal ClassIntent classと電話をかけることができないので、ユーザーはどんなアクティビティにも参加することができますので、contextも渡すことはできません。

私は以下のコードを書いていますが、それは助けにはなりません。

私はここにコンテキストを使用していますが、そのはIntentウィザードの開始]でタイマーを呼び出す

public class CounterClass extends CountDownTimer implements ITMServiceEvent { 

    @Override 
    public void onFinish() { 
     if(sql_code.equalsIgnoreCase("0")) { 
      String resultCode = command1.getString("result"); 
      context.startActivity(context.getApplicationContext(), MainActivity.class); 
      } 

contextを渡すにエラーメッセージを与えて、断片

CounterClass counterClass= new CounterClass(180000,1000); 
counterClass.setTextView(tvTimer); 
counterClass.start(); 
+1

チェック[this](http://stackoverflow.com/a/6330456/5296734)、それはあなたを助けるかもしれません。 –

+0

@ nick7291:ありがとう、私にこれを試してみましょう – Kirmani88

+0

[前のすべてのアクティビティーを完了してください]の可能な複製(http://stackoverflow.com/questions/6330260/finish-all-previous-activities) – faranjit

答えて

1

中の2つの部分があります。あなたの質問は、まず、あなたがアクティビティスタックをクリーンアップし、それらの上に新しいアクティビティを開始する方法です。あなたのケースではこれがLoginActivityであると思います。これを行うには

は、あなたがそれを開始したいとき、

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK); 

をごLoginActivityインテントのフラグを設定する必要があり、第二部では、表示した後、現在の活動を終えることができるようにしたいですユーザーへのダイアログ。私はあなたのタイマーがバックグラウンドで実行されるサービスクラスであると仮定します。あなたの現在の活動に時間が上がっていることを伝える方法!ブロードキャストメッセージを送信することです。好ましくは、LocalBroadcastManagerがお手伝いします。あなたは6アクティビティのすべてをそこから拡張することができるBaseActivityクラスを持つことができます。そして、クラスのアクティビティにLocalBroadcastManagerを登録/登録解除することができます(登録はに登録しないでください)。それらを登録したら、onReceiveメソッドを実装して処理するだけでダイアログを表示し、現在のものを終了した後にLoginActivityを開始する必要があります。

関連する問題