overridePendingTransition 這個函數在API5之後才添加進去的,那麼我們一定會想要這樣寫:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
overridePendingTransition(0,0);
}
恩 好吧 想當然的這樣做了以爲沒有出差 結果在1.6的機器上跑起來就。。。。VerifyError。。。。
這是爲什麼呢? 明明在if中的語句不會運行呀~
錯!overridePendingTransition 會在加載類加載時調用,所以與if無關~ 那麼你寫不寫在if中都會執行 所以纔會出現錯誤
如何解決呢?
OK 不讓他在加載時運行就好啦~
放一個內部類~ 在內部類中調用~
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
new Object() {
public void overridePendingTransition(Activity c, int i, int j) {
c.overridePendingTransition(i,j);
}
}.overridePendingTransition(this, 0, 0);
}
這樣 在運行到if之前 內部類不會被加載到JVM中 那麼也就不會調用裏面的方法~