overridePendingTransition出现unhandled exception: resource not found

到目前为止,貌似实现activity之间跳转动画只有两种方式,一种是在manifast里面去设置theme,另一种就是在startActivity()或者finish()之后调用overridePendingTransition(int ,int)

前面一种方式是死的,没有什么灵活性,在全app通用的界面上可以解决绝大部分跳转动画的需求,但是有些奇葩的需求用它是没法满足的

例如A,B,C三个activity,A->B->C, 然后在C按返回键时我要先干掉B,然后重新startActivity(B),这个时候用户看到的跳转动画就是错误的,正常按返回键是从右到左滚动,启动新的activity是从左到右滚动,此时,用户看到的是按返回键从左到右滚动

对于类似于上面这种特殊情况,我们需要在java代码里面动态设置跳转动画,因此,就需要使用第二种方式了

但是使用第二种方式是有坑的,如果你的工程不是以另外一个工程的插件形式出现的话,恭喜你,没有任何问题。但是如果你的工程和你工程所寄生在的主app的包名是不一样的,那就请看下面分解了。

主工程是com.test.main ,要处理跳转问题的工程是com.test.plugin,plugin中的所有组件都是在main中manifest定义的

那么相信plugin中的theme设置肯定是实在main的manifest中的

此时,如果你这样调用overridePendingTransition(com.test.plugin.R.anim.xxx, com.test.plugin.R.anim.xxx)的话,UI肯定会出现异常,并且看log会有一个unhandled exception,指的是资源找不到

翻了android源码之后可以了解到overridePendingTransition中处理传进来的id的时候,它用的是getPackageName(),它只从com.test.main.R中找资源,因此,像上面那样传进去com.test.plugin.R.anim.xxx肯定是不管用的

所以,解决方案是:在main工程的res/anim中定义xxx,然后调用overridePendingTransition(com.test.main.R.anim.xxx, com.test.main.R.anim.xxx)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值