crashes :ActivityA以共享元素转换间歇性崩溃启动ActivityB,不一致地重复Api级别: 23、24和25
启动活动的代码:
Intent intent = new Intent(this, ActivityB.class);
Pair<View, String> logoTransition = Pair.create(logo, getString(R.string.transition_logo));
Pair<View, String> logoTextTransition = Pair.create(logoText, getString(R.string.transition_logo_text));
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, logoTransition, logoTextTransition);
ActivityCompat.startActivity(this, intent, options.toBundle());Stacktrace (API 23):
Exception java.lang.IllegalArgumentException:
android.os.Parcel.readException (Parcel.java:1606)
android.os.Parcel.readException (Parcel.java:1555)
android.app.ActivityManagerProxy.isTopOfTask (ActivityManagerProxy.java:4787)
android.app.Activity.isTopOfTask (Activity.java:5753)
android.app.Activity.cancelInputsAndStartExitTransition (Activity.java:4075)
android.app.Activity.startActivityForResult (Activity.java:4052)
android.app.Activity.startActivity (Activity.java:4312)
android.support.v4.content.ContextCompat.startActivity (ContextCompat.java)
__null__.getDrawable (ContextCompat.java)
__null__.isDeviceProtectedStorage (ContextCompat.java)
com.my.app.activity.ActivityA.startMainActivity (ActivityA.java)有人知道是什么导致了这种行为吗?有解决这个问题的建议吗?
发布于 2017-02-25 11:30:44
我认为,对于该版本,不应该使用支持库中的方法。当然,我不知道,从你现有的问题,由于随机堆栈跟踪。
自从传输场景引入4.4格式。您可以包括api降级。此外,它是推荐的,否则,为什么我们需要这两种类型?
if (Build.VERSION.SDK_INT >= 21) {
ActivityOptions options = ActivityOptions
.makeSceneTransitionAnimation(this, logoTransition, logoTextTransition);
startActivity(this, intent, options.toBundle());
}
else {
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation(this, logoTransition, logoTextTransition);
ActivityCompat.startActivity(this, intent, options.toBundle());
}发布于 2017-07-06 10:45:46
在我的例子中,之所以会出现这种情况,是因为我订阅了两次单击操作,因此连续调用了两次startActivity。
希望这对某些人有帮助:)
发布于 2017-03-01 15:33:59
尝试在相关活动的onCreate()方法中加载转换,如下所示:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Transition mTransition = //your transitions
getWindow().setSharedElementEnterTransition(mTransition);
getWindow().setSharedElementExitTransition(mTransition);https://stackoverflow.com/questions/42315167
复制相似问题