android - Android:如何切换到已经创建的Activity
问题描述
我是 Android 编程新手。我想要做的是切换到另一个已经创建的活动。假设我启动了 Activity B 并从 Activity A 移动到 Activity B,然后我按下返回按钮并返回到 Activity A。现在我想在倒计时完成后切换到 Activity B。
ActivityA.java
private void startTimer() {
...
@Override
public void onFinish() {
// force the user to move on to Activity B
// if the user haven't started Activity B, just start it
if (!mHasActivityBStarted) {
Intent intent =
new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
} else {
// how can I switch to ActivityB that has been created?
}
}
}.start();
}
我该怎么做?
解决方案
来自Android 开发者文档
FLAG_ACTIVITY_REORDER_TO_FRONT
public static final int FLAG_ACTIVITY_REORDER_TO_FRONT
如果在传递给 Context.startActivity() 的 Intent 中设置,则此标志将导致已启动的活动被带到其任务历史堆栈的前面(如果它已经在运行)。
例如,考虑一个由四个活动组成的任务:A、B、C、D。如果 D 调用 startActivity() 的 Intent 解析为活动 B 的组件,则 B 将被带到历史堆栈的前面,结果顺序为:A、C、D、B。如果还指定了 FLAG_ACTIVITY_CLEAR_TOP,则此标志将被忽略。
在您的情况下,您可以在完成或重新创建它们之间ActivityA
进行切换。ActivityB
把它放在一起。
活动A
// Call this method when users press a button on ActivityA to go to ActivityB.
public void goToActivityB(View view) {
Intent intent = new Intent(this, ActivityB.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
// When users press a button from ActivityB, ActivityA will be bring to front and this method will be called by Android.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// Write your logic code here
}
活动B
// Call this method when users press on a button in ActivityB
public void backToActivityA(View view) {
Intent intent = new Intent(this, ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
// When users press a button from ActivityA, ActivityB will be bring to front and this method will be called by Android.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// Write your logic code here
}
推荐阅读
- bash - ssh 到服务器列表并针对同一列表运行命令
- c# - 提取拆分rar文件
- javascript - 如何在 React 中创建重定向规则而不重定向到相同的路由?
- javascript - 如何在 Javascript 中获取 Safari 设置
- ruby-on-rails - 选择:Capybara::Ambiguous:模糊匹配,找到 2 个匹配可见选项的元素
- glsl - 重图像下采样伪影
- typescript - 映射类型时,如何使键不是只读的?
- azure - 如何在 Azure Runbook 工作流中获取时间戳
- solr - 将子文档添加到现有 Solr 6.4 集合文档会创建重复文档
- python - 使用 gst-rtsp-server Python 绑定处理错误