当我想将现有活动放在前面时,活动再次创建



我添加了REORDER_TO_FRONT标志,以将我的现有活动置于顶部,而不是创建新实例。但它调用活动的 onCreate 方法,而不是 MainActivity 中的 onNewIntent。如果我在Menifest中添加launchMode="singleTop",那么工作正常。但我不想添加 singleTop,因为在某些情况下,如果用户单击应用程序图标,则应用程序会重新启动而不是从同一位置恢复,则在最小化模式下。

    Intent intent = MainActivity.newIntent(context);
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

谢谢

你只需要将SINGLE_TOP标志添加到你的Intent,像这样:

Intent intent = MainActivity.newIntent(context);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这会将所有活动从堆栈中删除回 MainActivity 的现有实例。它不会创建MainActivity的新实例或调用onCreate()。它将在MainActivity()中调用onNewIntent().

如果您想关闭所有其他活动并仅启动主要活动,这应该对您有用:

Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

希望这对:)有所帮助

无需清除当前活动并显示以前的活动。只需使用如下所示finish()方法:

您可以在onBackPressed()上使用它,然后单击toolbar后退按钮:

onCreate()外部使用此代码:

@Override
public void onBackPressed() {
    finish(); //closes current activity
}

toolbar

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         finish(); //close current activity
    }
});

单击"Android 后退"按钮时调用onBackPressed()方法。它的默认值是super.onBackPressed(),它也调用finish()方法!此示例仅供参考。

单击工具栏后退按钮时调用 toolbar.setNavigationOnClickListener(...) 方法。但为此,您必须在 onCreate() 方法的代码中添加这些行:

Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);

finish() 方法从后退堆栈中删除当前活动,并显示存储在后退堆栈中的先前活动!

相关内容

  • 没有找到相关文章

最新更新