江戸一番のジャスタウェイ職人のブログ

江戸一番のジャスタウェイ職人

ActionBar-PullToRefreshをAndroid Studioで使おうとしてハマった話

そもそも私がJavaもgradleもよくわかってないのが悪いのだけど QuickStart の通りにやっても動かなくて四苦八苦した。

QuickStartでは build.gradle に

dependencies {
    mavenCentral()
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
}

こう掛けと書いてあるけどこれは動かず

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
}

こう書くとうまくmaven経由でライブラリを読み込んでくれた。

ただ、最新版は0.9.3なのだけど #186 が反映されておらず、結局developmentブランチを落としてきて同梱した。 9b85cf

このバグはViewPager上のFragmentなどで同ライブラリを使用し、PagerAdapterのnotifyDataSetChangedを叩いた後のFragment#onCreateViewでActionBarPullToRefresh.fromする時に発生した。

で、projectとしてそのまま突っ込んだ訳ですがこの際にも

  • gradle.properties に VERSION_NAME が定義されていると読み込めない
  • build.gradle に repositories { mavenCentral() } がないと smoothprogressbar が読み込めない

などあり色々微調整が必要でした、gradleに少しでも詳しければはまらなかったのだろうけれど...。

更に同じライブラリをprojectとして読んだりmavenで読んだり読み込みの方法を変えるとgradle上ではbuild出来るのにAndroid Studio(0.4.2)上でクラスパスが通らないという状況に陥る、この際Clean Projectしても解決しない、一度*.imlを消してプロジェクトを開き直すと解決する。

そもそも私がJavaもgradleもAndroid Studioもよくわかってないのはだいぶ効率悪いのでちゃんと調べておいたほうが良い。