Androidアプリを趣味程度にいじっています。
ポップアップメッセージを出す手段として、Toastに替わってSnackbarというのがあるそうです。
短い時間の通知に加え、アクションを追加できるのはいいなと思って使うことにしましたが、googleのドキュメントそのままにやってみたら失敗したのでそれについてメモします。
Android Studio 4.1.2
Runtime version: 1.8.0_242-release-1644-b3-6915495 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.15.7
失敗
↑を参考に。『CoordinatorLayout を使用する』の章で「CoordinatorLayout にアタッチされている場合、Snackbar で次の追加機能が使えるようになります。……Snackbar をスワイプして消すことができる。…… 」とあるので書いてある通り、現在のレイアウトをCoordinatorLayoutでラッピングしました。
↑に載っているサンプルコードがこちら
<android.support.design.widget.CoordinatorLayout
android:id="@+id/myCoordinatorLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Here are the existing layout elements, now wrapped in
a CoordinatorLayout -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- …Toolbar, other layouts, other elements… -->
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
するとandroid.support.design.widget.CoordinatorLayout
が赤文字になって、赤ランプマークを押すとAdd dependency androidx.coordinatorlayout:coordina...
と出てきます。そこをクリックしたらgradleに
dependencies {
...
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
...
}
と追加されました。しかしレイアウトファイルのcoordinatorLayoutのところは赤文字のままで、うまく動きません。
解決
色々調べてみたのですが解決方法がわからないでいたところ、とある解説記事に遭遇しました
これをよくみると、レイアウトファイルのところで
<androidx.coordinatorlayout.widget.CoordinatorLayout
...
としています。
この通りに書き換え、つまり
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/myCoordinatorLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Here are the existing layout elements, now wrapped in
a CoordinatorLayout -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- …Toolbar, other layouts, other elements… -->
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
としたら動作するようになりました。スワイプで消すのも無事できるようになりました。