使用Lollipop活动转换时未调用onActivityResult

时间:2015-08-07 11:46:05

标签: android android-transitions

在我的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);
}

我用:

完成了LoginActivity
private void finishLogin() {
    setResult(RESULT_OK);
    ActivityCompat.finishAfterTransition(this);
}

过渡本身完美无缺。任何指针都可能是onActivityResult的问题?

谢谢!

编辑:好的,在运行一些测试之后,似乎在活动生命周期方法中启动转换和forResult的活动总是导致onActivityResult未被调用。如果我启动LoginActivity,例如按下按钮后,一切都按预期工作。

0 个答案:

没有答案