我创建了一个从CountDownTimer扩展的类,它具有一个onFinish()方法,该方法在timer到期时调用。有6个活动,当计时器到期时,用户可以位于任何activity中,因此在CounterTimer中,当Finish()方法调用时,我需要向用户显示Alert Message,同时我需要将用户重定向到页面。事情变得混乱,因为我无法在Login中调用Intent class,我也无法通过Normal Class,因为用户可以进行任何活动。我已经编写了以下代码,但没有帮助。我在这里使用上下文,但是在将context传递给context时给出了错误消息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); }在片段开始时在向导启动时调用TimerCounterClass counterClass= new CounterClass(180000,1000);counterClass.setTextView(tvTimer);counterClass.start(); (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您的问题有两个部分,首先是如何清理Activity堆栈并在它们之上启动新的Activity,我想这就是您的情况下的LoginActivity。为此,您需要在启动时设置LoginActivity Intent的标志,intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);第二部分是,您希望在向用户显示对话框之后能够完成当前活动。我假设您的Timer是服务类,在后台运行。告诉您当前活动时间已到的方式!是发送广播消息。最好LocalBroadcastManager可以帮助您。您可以拥有一个BaseActivity类,可以在其中扩展所有6个Activity,并且可以向LocalBroadcastManager类中的那些活动注册/注销BaseActivity(在onResume中注册,在onPause中注销) 。注册它们之后,您只需要实现和处理onReceive方法,您可以在其中显示一个对话框并在完成当前对话框后启动LoginActivity。 (adsbygoogle = window.adsbygoogle || []).push({}); 10-06 07:29