我收到此代码
public static boolean launchIntent(Activity activity, Intent intent, boolean isBack) {
try {
Bundle bundle = isBack ? ActivityOptions.makeCustomAnimation(activity.getApplicationContext(), R.xml.animation3, R.xml.animation4).toBundle() : ActivityOptions.makeCustomAnimation(activity.getApplicationContext(), R.xml.animation, R.xml.animation2).toBundle();
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
ActivityCompat.startActivity(activity, intent, bundle);
return true;
} catch (Exception e) {
Log.d(TAG, "Error launchIntent");
e.printStackTrace();
return false;
}
}
我的所有活动都在singleTop lauchmode中(我也尝试过标准模式),并且每次更改活动都会通过此startintent传递(除了我让本机onbackpress完成工作的地方)。
这是我的方案问题。
当我做A => B => C back => B back => A => B =>如果我去B =>那么C(从这里我所有的lauchintent会反应,如果他们忽略了我的旗帜FLAG_ACTIVITY_REORDER_TO_FRONT) C => B当我回来的时候我会去C到B到C,那里的标志FLAG_ACTIVITY_REORDER_TO_FRONT应该像C到A那样做出反应。
08-30 15:45:19.266 13124-13124/fr.cora.gestionarticle W/System.err: java.lang.IllegalArgumentException
08-30 15:45:19.266 13124-13124/fr.cora.gestionarticle W/System.err: at android.os.Parcel.readException(Parcel.java:1550)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.os.Parcel.readException(Parcel.java:1499)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.app.ActivityManagerProxy.isTopOfTask(ActivityManagerNative.java:4535)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.app.Activity.isTopOfTask(Activity.java:5450)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.app.Activity.startActivityForResult(Activity.java:3822)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.app.Activity.startActivity(Activity.java:4055)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.support.v4.app.ActivityCompatJB.startActivity(ActivityCompatJB.java:27)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at android.support.v4.app.ActivityCompat.startActivity(ActivityCompat.java:134)
08-30 15:45:19.267 13124-13124/fr.cora.gestionarticle W/System.err: at fr.cora.gestionarticle.helpers.NavigationHelper.launchIntent(NavigationHelper.java:133)
如果我删除了动画,我没有得到异常但是没有解决我的方案问题。
现在有人为什么这个标志在这种情况下停止工作(也许在其他情况下我找不到)?以及如何解决它?
如果您需要更多信息请致电。
编辑1:
我想做什么,并在“正常”用例中工作 A => B => C => B堆的活动应该是(在大多数情况下)A,C,B(重新排序B到前面)。
我的用例没有用 A =>我回来了,所以我回到了A,B被摧毁了。然后我再次导航A => B => C => B由于某种原因,我的活动堆栈是A,B,C *,B(B被重新创建而不是传递到前面)。
我得到的异常是我在每次导航的第二部分之后都在我的launchIntent中给出的(在我的用例中使用“*”从导航C标记中获取)。 当我删除设置动画的包时,我不再有例外但是没有解决导航问题。
在“正常”的情况下,这真的很奇怪,旗帜工作正常,但在这种情况之后,它就像不再起作用了。