如何从活动第3过渡到第1?

时间:2018-10-29 16:10:09

标签: android android-recyclerview shared-element-transition

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

  

MainActivity(共享元素活动转换)->第二个活动->   第三个活动(共享元素活动转换)-> MainActivity   (精确滚动到RecyclerView中“第三项活动”的位置。

My MainActivity 我希望每个人都能为我提供解决方案。非常感谢。

1 个答案:

答案 0 :(得分:0)

要启动ThirdActivity时,可以在SecondActivity中使用startActivityForResult而不是startActivity。

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

当您完成ThirdActivity时

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

如果您使用 startActivityForResult(),那么它将在启动它的Activity中提供回调,因此ThirdActivity一旦完成,它将返回到 onActvityResult() SecondActivity。您必须在其中检查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?