關於overridePendingTransition效果在1.6版本中會出現VerifyError的問題的解決

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中 那麼也就不會調用裏面的方法~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章