KITCHEN DRINKER

主にAndroid開発メモとか

CustomViewの罠

Custom TextViewにおいて、API 15 で Crash が発生していたので、その対応

Fatal Exception: java.lang.NoSuchMethodError: android.widget.TextView.getMaxLines
       at jp.co.matchingagent.cocotsure.ui.custom.ExpandableTextView.a(ExpandableTextView.kt:54)
       at jp.co.matchingagent.cocotsure.ui.custom.ExpandableTextView.a(ExpandableTextView.kt:14)
       at jp.co.matchingagent.cocotsure.ui.custom.ExpandableTextView$1.onClick(ExpandableTextView.kt:47)
       at android.view.View.performClick(View.java:3514)
       at android.view.View$PerformClick.run(View.java:14111)
       at android.os.Handler.handleCallback(Handler.java:605)
       at android.os.Handler.dispatchMessage(Handler.java:92)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4457)

原因

getMaxLine()で Crashが発生していた。→ TextViewgetMaxLine()API 16以上

https://developer.android.com/reference/android/widget/TextView.html#getMaxLines()

AppCompatActivityの配下であればTextView -> AppCompatTextViewの自動変換がされるが、カスタムView内のレイアウトでは、TextView -> AppCompatTextView への自動変換は行われない

対応

TextViewAppCompatTextView に置き換え