背景
タイトルのままで、Android JetpackのNavigationで遷移先のFragmentに値を渡したくなって、safe-argsを使ってみようと試そうとし、公式のページとか見ながら追加しようとしたら怒られた。
他のサイトとかも同じように書いてあったりしたので大丈夫かと思ったらそんなことはなかった...。
起きた問題
この部分を参考に、app/build.gradle
にapply plugin: 'androidx.navigation.safeargs'
を追加しました。
そしてsyncさせると Plugin with id 'androidx.navigation.safeargs' not found.
と言われてしまい :thinking_face:🤔
見ていたページの前後を見てみても特にそれ以外に追加すべきなものを書かれていませんでした。
解決法
ググって、stackoverflowでこのページを見つけました。
この回答を見ると、"そのクラスパスじゃなくてこっちのクラスパスで試してみて"みたいなこと書いてあり、「クラスパス...?何か追加したっけ....」と思い、質問の方も確認して見ると...
なんということでしょうapp/build.gradle
のdedependencies
にclasspathが追加されているではありませんか(某番組風)
ということでこの質問と回答を参考にapp/bundle.gradle
に以下を追加しました。
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha05"
そして、syncすると通りました。
まとめ
公式だけしか見ないのは罠
pluginとして使うからclasspathが必要なのは当たり前なんて言われてしまうとごめんなさいとしか言えなくなります...
直接は関係ないけど、gradleについてまだよくわかっていないので、"build.gradleにこれを追加して"と言われてもどれ...というお気持ちになってしまいませんか。なりませんか。