PG備忘録

プログラミングいろいろ

エミュレーターで動くのに実機で動かない問題

問題

作ったアプリ↓が、Android Studioエミュレーターでは動くのに、自分のスマホだと何故か強制終了する
olee46.hatenablog.com

原因

cb.setTextAppearance(R.style.TextAppearance_AppCompat_Medium);

のコード(2箇所)が原因だった模様
setTextAppearance(int resId)は、API>=23でしか動かない
自分のスマホAndroid 5.1でAPI 22だったため、クラッシュしていた模様
※記事のコードは修正済

解決方法

コードを以下のように書き換える

if (Build.VERSION.SDK_INT < 23) {
    cb.setTextAppearance(MainActivity.this, R.style.TextAppearance_AppCompat_Medium);
} else {
    cb.setTextAppearance(R.style.TextAppearance_AppCompat_Medium);
}

教訓

  • エミュレーターで動くのに実機で動かないとき: とりあえず実機と同じAPIエミュレーターでテストする
  • コードのタブで赤線が出てなくても、コードの中身で赤線が出てることがある
  • Logcat読もうね