Photoview: この例外が発生する理由 'setScaleType〜を呼び出す必要があります'

作成日 2016年08月09日  ·  6コメント  ·  ソース: Baseflow/PhotoView

アクティビティを終了すると、次のエラーが発生します。

PhotoViewAttacherをアタッチしてから、ImageViewのScaleTypeが変更されました。 ImageViewではなくPhotoViewAttacherでsetScaleTypeを呼び出す必要があります

xmlまたはJavaコードでscaleTypeを使用していません。
なぜこれが私に起こったのですか?

最も参考になるコメント

finishAfterTransitionメソッドをオーバーライドし、mAttacher.cleanup()を呼び出します。

全てのコメント6件

これがどのように、そしてなぜ起こっているのかを知るために、ここにいくつかのコードを投稿していただけますか?

PhotoViewPicasso PhotoViewを使用しています

  • Kotlinコード
picasso.load(imageUrl).noPlaceholder().fit().rxInto(trans_imageview).subscribe({
            progressBar.visibility = View.GONE
            val photoView = PhotoViewAttacher(trans_imageview)
            photoView.update()
        }, {toast("Error : ${it.message}")})
  • Xmlコード
    <ImageView
        android:id="@+id/trans_imageview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:adjustViewBounds="true"
        android:transitionName="image" />

photoViewをタッチしながら戻るボタンを押すと、

  • フルスタックトレース
java.lang.IllegalStateException: The ImageView's ScaleType has been changed since attaching a PhotoViewAttacher. You should call setScaleType on the PhotoViewAttacher instead of on the ImageView
                                                                      at uk.co.senab.photoview.PhotoViewAttacher.checkImageViewScaleType(PhotoViewAttacher.java:736)
                                                                      at uk.co.senab.photoview.PhotoViewAttacher.setImageViewMatrix(PhotoViewAttacher.java:868)
                                                                      at uk.co.senab.photoview.PhotoViewAttacher.checkAndDisplayMatrix(PhotoViewAttacher.java:723)
                                                                      at uk.co.senab.photoview.PhotoViewAttacher.onDrag(PhotoViewAttacher.java:385)
                                                                      at uk.co.senab.photoview.gestures.CupcakeGestureDetector.onTouchEvent(CupcakeGestureDetector.java:96)
                                                                      at uk.co.senab.photoview.gestures.EclairGestureDetector.onTouchEvent(EclairGestureDetector.java:85)
                                                                      at uk.co.senab.photoview.gestures.FroyoGestureDetector.onTouchEvent(FroyoGestureDetector.java:66)
                                                                      at uk.co.senab.photoview.PhotoViewAttacher.onTouch(PhotoViewAttacher.java:523)
                                                                      at android.view.View.dispatchTouchEvent(View.java:9291)
                                                                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                      at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2445)
                                                                      at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent_aroundBody0(PhoneWindow.java:1756)
                                                                      at com.android.internal.policy.PhoneWindow$AjcClosure1.run(PhoneWindow.java:1)
                                                                      at android.view.PhoneWindowAO.ajc$around$android_view_PhoneWindowAO$2$99ce526bproceed(PhoneWindowAO.aj:113)
                                                                      at android.view.PhoneWindowAO.ajc$around$android_view_PhoneWindowAO$2$99ce526b(PhoneWindowAO.aj:117)
                                                                      at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1756)
                                                                      at android.app.Activity.dispatchTouchEvent(Activity.java:2800)
                                                                      at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:63)
                                                                      at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2406)
                                                                      at android.view.View.dispatchPointerEvent(View.java:9517)
                                                                      at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4309)
                                                                      at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4175)
                                                                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3682)
                                                                      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3735)
                                                                      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3701)
                                                                      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3709)
                                                                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3682)
                                                                      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3735)
                                                                      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3701)
                                                                      at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3828)
                                                                      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3709)
                                                                      at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3885)
                                                                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3682)
                                                                      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3735)
                                                                      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3701)
                                                                    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3709

共有要素の遷移??

共有要素の遷移を使用しています

finishAfterTransitionメソッドをオーバーライドし、mAttacher.cleanup()を呼び出します。

完全! ありがとう@bediy

このページは役に立ちましたか?
0 / 5 - 0 評価