在我的HomeActivity的onCreate方法中,我检查用户是否已登录,如果不是,则启动LoginActivity。如果我使用以下命令启动LoginActivity而不进行转换:
startActivityForResult(intentLogin, INTENT_REQUEST_LOGIN);
一切都很好,当我在LoginActivity中调用finish()时,onActivityResult会按计划调用。但如果我使用:
ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this);
startActivityForResult(intentLogin, INTENT_REQUEST_LOGIN, activityOptionsCompat.toBundle());
并分别在LoginActivity中调用ActivityCompat.finishAfterTransition(),onActivityResult永远不会在HomeActivity中调用。
LoginActivty中的转换设置如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
if (Utils.isRunningLollipopAndHigher()) {
setActivityTransition();
}
...
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void setActivityTransition() {
Transition transitionEnter = new Slide(Gravity.BOTTOM);
transitionEnter.excludeTarget(android.R.id.statusBarBackground, true);
transitionEnter.excludeTarget(android.R.id.navigationBarBackground, true);
getWindow().setEnterTransition(transitionEnter);
}
我用:
完成了LoginActivityprivate void finishLogin() {
setResult(RESULT_OK);
ActivityCompat.finishAfterTransition(this);
}
过渡本身完美无缺。任何指针都可能是onActivityResult的问题?
谢谢!
编辑:好的,在运行一些测试之后,似乎在活动生命周期方法中启动转换和forResult的活动总是导致onActivityResult未被调用。如果我启动LoginActivity,例如按下按钮后,一切都按预期工作。