内容
package androidx.navigation.myapp
class Argument {
enum class Type {
A,
B,
}
}
上記Type
をNavigation
コンポーネントのデスティネーションのargument
に指定するとき、下記のように書いてしまいがちですが、エラーになります。
<argument
android:name="type"
app:argType="androidx.navigation.myapp.Argument.Type" />
こちらのように$を使います。
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_graph">
<fragment
android:name="androidx.navigation.myapp.MyFragment">
<argument
android:name="type"
app:argType="androidx.navigation.myapp.Argument$Type" />
</fragment>
</navigation>
また、app:argType
に自作クラスを利用し、R8を設定している場合は、@Keep
でクラス名が書きかわらないようにしておきましょう。@Keep
をつけないとアプリ起動時にクラッシュが発生します。
package androidx.navigation.myapp
@Keep
class Argument {
@Keep
enum class Type {
A,
B,
}
}