我可以结束活动并从片段切换案例开始新活动吗?



我在安卓工作室工作。我有一个底部导航片段。对于最后一个开关情况,我需要一个按钮来导航到HomeActivity(主屏幕(。我试过了:

case SUMMARY:
navNextText.setText(R.string.end);
navNextImageView.setOnClickListener(v -> navigateHome());
navNextText.setOnClickListener(v -> navigateHome());
break;
default:
Log.w(TAG, "Executing a default case in navigateNext(). CTX: " + contextState.toString());
}
private void navigateHome() {
Objects.requireNonNull(getActivity()).finish();
Intent in = new Intent(getActivity(), HomeActivity.class);
startActivity(in);
}

这在一定程度上是有效的。我可以导航回家,但是当我单击回导航片段所在的活动时,导航栏将恢复到更改活动之前的位置。 我也尝试在private void navigateHome中添加onStop()onDestroy,但这似乎没有任何作用。 我只是想知道从片段关闭活动并开始新活动的更干净方法是什么。

如果您想从后台堆栈中删除当前活动,只需添加finish()当您在片段中时,请使用requireActivity().finish()

此外,为了确保后退堆栈中没有活动,您可以使用以下意图标志删除所有活动

private void navigateHome() {
Objects.requireNonNull(getActivity()).finish();
Intent in = new Intent(getActivity(), HomeActivity.class);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // <<<<< flag
startActivity(in);
requireActivity().finish(); // <<< finish the current activity
}

最新更新