2017-02-18 15 views
6

問題IllegalArgumentExceptionが

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()); 

:アクティビティを起動する23、24及び25

コード:ActivityAが断続 一貫して再現性がない のAPIレベルをクラッシュ共有要素の遷移にActivityBを開始します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) 

誰でもこの現象の原因を知っていますか? この問題の修正方法はありますか?

+0

何この 'startActivity()'と呼ばれている、すなわち、どのようなクラスあなたがしているされているもの文脈? – azizbekian

+0

アクティビティからの呼び出し –

+0

この[link](http://stackoverflow.com/questions/26688374/android-activity-transitions-using-support-v4-up-to-date-with-android-l)を参照してください。これはあなたを助けるでしょう。 –

答えて

3

私は、そのバージョンのサポートライブラリのメソッドを使用しないでください。確かに、私は、ランダムなスタックトレースのためにあなたの既存の問題から把握することはできません。

Tranlsation Sceneはフォーム4.4を導入して以来、 apiの非推奨版を含めることができます。さらに、そうしないと、なぜ両方のタイプが必要なのかをお勧めします。このような関係の活動のonCreate()方法で

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()); 
    } 
+2

ActivityCompatの目的は、新しい機能を適用するためにSDKのバージョンをチェックする必要がないということでした。これが私の問題を解決すると自信を持っていますか? –

+1

@GaborPeto ActivityCompatの場合はオプションですが、オプションの場合はActivityOptionsCompatとなります。 – GensaGames

+0

@GensaGames私はまだLollipopデバイス上の同じコードで同じ例外を取得します。 if(Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP){ ActivityOptions options = ActivityOptions .makeSceneTransitionAnimation(MyActivity.this、logoImageView、 "transition_name"); startActivity(intent、options.toBundle()); } startActivity()で例外が発生します。 – cgr

0

てみローディング遷移:私の場合は

getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); 

Transition mTransition = //your transitions 
getWindow().setSharedElementEnterTransition(mTransition); 
getWindow().setSharedElementExitTransition(mTransition); 
1

startActivityが2回連続と呼ばれていたので、私は、クリックアクションに2回を購読するので、これが起こります。これがために参考にすることができ

希望いくつかのいずれか:)

関連する問題