首页 > 解决方案 > 我可以结束一个活动并从一个片段开关案例开始一个新的活动吗?

问题描述

我在 android studio 工作。我有一个底部导航片段。对于最后一个 switch 案例,我需要一个按钮来导航到 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);
}

这在一定程度上有效。我可以导航回家,但是当我单击返回导航片段所在的活动时,导航栏会恢复到更改活动之前的位置。我也尝试过添加onStop()and onDestroyto private void navigateHome,但这似乎无济于事。我只是想知道从片段中关闭活动并开始新活动的更清洁方法是什么。

标签: javaandroidandroid-fragments

解决方案


just add finish() if you want to remove the current activity from the backstack As you're in a fragment, use requireActivity().finish()

Also to make sure you have no activities in back stack, you can remove all using below intent flag

 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
}



推荐阅读