На самом деле, я использую переход общих элементов в своем коде. Журнал ошибок, пойманный youmeng:
java.lang.NullPointerException: попытка вызвать виртуальный метод «void android.view.ViewGroup.transformMatrixToLocal (android.graphics.Matrix)» для нулевой ссылки на объект в android.app.ActivityTransitionCoordinator.null setSharedElementMatrices (null) (ActivityTransitionCoordinator.java: 505) в android.app.ActivityTransitionCoordinator.null moveSharedElementsToOverlay(null)(ActivityTransitionCoordinator.java:794) в android.app.EnterTransitionCoordinator$3.null onPreDraw(null)(EnterTransitionCoordinator.java:204) в android.view.ViewTreeObserver.null dispatchOnPreDraw (null)(ViewTreeObserver.java:944) в android.view.ViewRootImpl.null PerformTraversals(null)(ViewRootImpl.java:2055) в android.view.ViewRootImpl.null doTraversal(null)(ViewRootImpl.java:1107) в android .view.ViewRootImpl$TraversalRunnable.null run(null)(ViewRootImpl.java:6013) в android.view.Choreographer$CallbackRecord.null run(null)(Choreographer.java:858) в android.v iew.Choreographer.null doCallbacks(null)(Choreographer.java:670) в android.view.Choreographer.null doFrame(null)(Choreographer.java:606) в android.view.Choreographer$FrameDisplayEventReceiver.null run(null)( Choreographer.java:844) в android.os.Handler.null handleCallback(null)(Handler.java:739) в android.os.Handler.null dispatchMessage(null)(Handler.java:95) в android.os.Looper .null loop(null)(Looper.java:148) в android.app.ActivityThread.null main(null)(ActivityThread.java:5417) в java.lang.reflect.Method.null invoke(null)(Method.java ) в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.null run(null)(ZygoteInit.java:726) в com.android.internal.os.ZygoteInit.null main(null)(ZygoteInit.java:616)
Я просмотрел версии устройства, которые не центрированы, в том числе 6.0, 7.0 и 8.0. И модели устройств тоже не отцентрованы.
Вот мой код:
override fun onLoadUrl(url: String, source: String, imageView: ImageView?, drawableRes: Int) {
val tabBean = MultiWindowManager.getForegroundTab()!!
val transaction = supportFragmentManager
.beginTransaction()
var fragment = supportFragmentManager
.findFragmentByTag(tabBean.tabId) as? WebFragment
if (fragment != null) {
transaction.show(fragment).commitAllowingStateLoss()
fragment.loadUrl(url, source)
} else {
fragment = WebFragment.newInstance(url, tabBean.tabId, source, drawableRes)
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
fragment.sharedElementEnterTransition = DetailTransition()
fragment.exitTransition = Fade()
fragment.enterTransition = Fade()
fragment.sharedElementReturnTransition = DetailTransition()
}
transaction.remove(mainFragment)
transaction.add(R.id.frameContainer, fragment, tabBean.tabId)
imageView?.let {
transaction.addSharedElement(it, getString(R.string.shared_recommend))
}
transaction.commitAllowingStateLoss()
}
webFragment = fragment
updateFragmentType(FRAGMENT_WEB)
}
DetailTransition.java:
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class DetailTransition extends TransitionSet {
public DetailTransition() {
init();
}
public DetailTransition(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
setOrdering(ORDERING_TOGETHER);
addTransition(new ChangeBounds()).
addTransition(new ChangeTransform()).
addTransition(new ChangeImageTransform());
}
}
Я ожидаю, что я больше не могу видеть эту ошибку.