前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

トラブルシューティング

onActivityResultの呼ばれるタイミングとFragmentについて

課題 Fragment.onCreateViewでViewを生成しているが、onActivityResult内でそのViewを使用しようとした際にエラーになるケースがある。 原因 通常Fragment.onActivityResultはActivity.onStart前に実行され、それまでにはFragment.onCreateViewは既に実行さ…

AppBarLayout内のViewのVisibilityを変更したらlayout_scrollFlags="snap" が無視された話

タイトルがイケてないが他に短い表現も思いつかなかったのでとりあえず。 課題 AppBarLayout内に3つのViewを配置。それぞれのapp:layout_scrollFlagsは上から順に以下の通り app:layout_scrollFlags="scroll" app:layout_scrollFlags="scroll" app:layout_sc…

Firebase Invitesを使う [Android]

そしてDeprecatedへ Firebaseのサポートからメールが来ていたので報告していたバグが直ったかなーと思ったら Deprecated の案内だった。 https://firebase.google.com/docs/invites/deprecation 今後は普通のACTION_SENDのシェアと Dynamic Link 使えとのこ…

Target API levelを28にした際に遭遇したエラー

Target API level 28にしたところ、Essential Phoneで2つのエラーに遭遇した。 Google Mapが落ちる NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion; inside of com.google.android.gms 対応 AndroidManifest.xmlに以下の記…

FLAG_ACTIVITY_REORDER_TO_FRONTのバグについて

BackStack上にあるActivityを再作成することなく再利用したい場合に、FLAG_ACTIVITY_REORDER_TO_FRONT を使うことで可能となるが、2つのバグがあって採用できずにいる。1つは解決済みだがもう一方は現在も発生する。 RootViewではないのにバックボタン押下…

Gradle 4.10とFirebaseについて

2018/11/12追記 Android Studiio 3.3 beta3 firebase-core:16.0.5 firebase-perf:16.2.0 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip の組み合わせで上手く動いた。なのでgradle-4.10.2で現在は問題ない。 以下の記…

Android Support Library to v23でApache HTTP Client が削除されている

課題 Android Support Library to v23でorg.apache.httpパッケージが削除されてしまい、コンパイルエラーになる 対策 org.apache.http.client.HttpClientをはじめとするhttpClient系のクラスは以前からdeprecatedとなっていたが、Support Library v23でコー…

Unable to bind views forをくらう

課題 ButterKnifeを使ってViewHolderのbindを行ったところ、RuntimeExceptionが発生した。 java.lang.RuntimeException: Unable to bind views for $パッケージ名 at butterknife.ButterKnife.bind(ButterKnife.java:322) at butterknife.ButterKnife.bind(B…

SwipeRefreshLayoutのsetRefreshingが表示されない

課題 SwipeRefreshLayoutを使っているが、初期表示のタイミングでsetRefreshing(true)としてもローディングアニメーションが表示されない。 対応 Message queueを使用して処理の実行タイミングを遅らせる。 private SwipeRefreshLayout mSwipeRefreshLayout;…

SwipeRefreshLayoutとRecyclerViewを同時に使用すると挙動がおかしくなる場合の対策

課題 SwipeRefreshLayoutとRecyclerView, GridView, ListViewを同時に使用した際、リストの先頭まで戻らないうちにスワイプリフレッシュが実行されてしまう。 対策 参考のURLを元に制御する。 RecyclerView#setOnScrollListenerは既にDeprecatedとなっている…