2011-10-07 42 views
4

在Android應用程序中,我實現了一個片段,該片段覆蓋了onViewCreated以在視圖存在時設置一些OnClickListeners。onView使用兼容庫創建

這一切工作正常,當我執行。然而,一旦我添加兼容性庫v4 r3,似乎該方法根本不被調用。

現在我正在將我的設置遷移到onResume,但那真的不太理想。所以這裏是我的問題:

  • 這是兼容性庫中的錯誤?

  • 有沒有更好的解決方法?

後一些更多的挖掘和嘗試不同的東西,我得到這個堆棧跟蹤,這讓我相信這確實是兼容性庫的錯誤。

10-07 14:25:11.130: ERROR/AndroidRuntime(2964): FATAL EXCEPTION: main 
     java.lang.NoSuchMethodError: android.support.v4.app.Fragment.onViewCreated 
     at roboguice.fragment.RoboFragment.onViewCreated(RoboFragment.java:18) 

但更奇怪。看一下兼容庫的來源,那個方法實際上是存在的,但是它是空的。

+0

爲什麼不在'onCreateView()'中設置點擊監聽器。 – Macarse

+0

因爲這太早..我正在使用roboguice和注射需要首先發生。來想一想吧..我可以做到這一點。 –

+0

沒有..注射發生在RoboFragment中onViewCreated,這是從來沒有被稱爲.. –

回答

3

經過很多來回和調試,我發現這個問題。事實證明,我在我的項目中使用了舊版本的兼容性庫。我現在已經更新了我的項目,並且工作正常。僅供參考所需的變化是在Maven POM文件兼容性庫的依賴是這樣

 <dependency> 
      <groupId>android.support</groupId> 
      <artifactId>compatibility-v4</artifactId> 
      <version>r3</version> 
     </dependency> 

與部署到使用Maven的Android SDK部署你的Maven回購庫。我也有updated the roboguice wikilinked gist on my github account

+0

請參閱http://www.simpligility.com/2012/01/android-compatible-library-following-lint /有關如何避免需要使用Maven Android SDK部署者的詳細信息 – emmby

+0

我遇到了一個更新的compat修訂版r10的相同問題,它不是一個很大的問題,因爲我可以很容易地綁定/做其他地方的東西,但仍然... –

+0

好的,我錯了。它是一個問題,因爲在自定義實現中注入非視圖成員後立即注入視圖不起作用。 –