如何从 activity 第 3 位过渡到第 1 位?

How to transition from activity 3rd to 1st?

我在活动之间 Shared Element Activity Transition 遇到问题。我有 MainActivity,它有一个带框的 recyclerview (recyclerview.horizontal)。单击每个框将转到相应的 activity。当我点击一个框时出现的问题,我切换到第二个 activity,在第二个 activity 我按一个按钮切换到第三个 activity。在这里,我向右滑动 return 到带有过渡的 MainActivity,我希望它向右过渡到与 MainActivity 中的回收视图中的第 3 个 activity 相对应的框。所以,我的目的是:

MainActivity (Shared Element Activity Transition)-> Second Activity -> Third Activity (Shared Element Activity Transition)-> MainActivity (exactly scroll to position for Third Activity in RecyclerView).

My MainActivity 我希望每个人都给我解决方案。非常感谢。

您可以在 SecondActivity 开始时使用 startActivityForResult 而不是 startActivity ThirdActivity.Like this :

Intent i = new Intent(this, ThirdActivity.class);
startActivityForResult(i, 1);

当你完成第三次时Activity

Intent returnIntent = new Intent();
returnIntent.putExtra("activity_finish",true);
setResult(Activity.RESULT_OK,returnIntent);
finish();

如果你使用 startActivityForResult() 那么它会在启动它的 Activity 中给出回调,所以一旦 ThirdActivity 完成后,它将 return 到 SecondActivity.Where 中的 onActvityResult() 你必须检查 result_code 并请求这样的代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1) {
    if(resultCode == Activity.RESULT_OK){
        boolean isActivityFinish=data.getBooleanExtra("activity_finish");
         if(isActivityFinish){
          // finish your Second Activity here
          }


    if (resultCode == Activity.RESULT_CANCELED) {
        //Write your code if there's no result
    }
}

}

更多信息:How to manage `startActivityForResult` on Android?