Безопасные аргументы: невозможно разрешить символ 'строка'

Я использую компоненты архитектуры навигации, и я хотел воспользоваться преимуществами плагина safe args.

Я хочу добавить несколько аргументов к одному из моих фрагментов в навигационном графе. Код аргументов создается с помощью редактора дизайна. Вот отрывок:

<fragment
    android:id = "@+id/inAppPurchaseFragment"
    android:name = "purchaseFragment" >
    <argument
        android:name = "attribution_id"
        app:type = "string" />
</fragment>

Однако я получаю сообщение об ошибке в Android Studio (3.2 Canary 16), в котором говорится, что он не может разрешить строку символа или любой тип, который я пытаюсь использовать. У кого-нибудь из вас была эта проблема, и знаете ли вы, почему она возникает?

Обновите для большего контекста; Я получаю эту ошибку во время сборки в строке с app:type = "string":

error: 'string' is incompatible with attribute type (attr) integer.

2
0
1 259
4

Ответы 4

Ваш код выглядит хорошо, убедитесь, что вы добавили к нему defaultValue

android:defaultValue = "something"

И, кстати, вы реализовали Navigation Architecture Components, как написано на adding-components documentation?

dependencies {
    def nav_version = "1.0.0-alpha02"

    implementation "android.arch.navigation:navigation-fragment:$nav_version" // use -ktx for Kotlin
    implementation "android.arch.navigation:navigation-ui:$nav_version" // use -ktx for Kotlin

    // optional - Test helpers
    androidTestImplementation "android.arch.navigation:navigation-testing:$nav_version" // use -ktx for Kotlin
}

Да, я настроил его в соответствии с документацией по добавлению компонентов. Это сработало для вас? Удалось ли вам использовать безопасные аргументы? Кроме того, удалось ли вам установить тип, который вы сами определили с помощью app:type?

Saba Imran 09.07.2018 20:00

Да, я следил за этим руководство несколько дней назад, и это сработало. Также, если вы хотите начать с 0, посмотрите этот Видеоурок

Skizo-ozᴉʞS 09.07.2018 20:02

Ничего страшного, у меня уже есть рабочий график навигации. Я просто хотел использовать безопасные аргументы, чтобы связать все это воедино. Я подозреваю, что это как-то связано с рисованием ресурсов.

Saba Imran 09.07.2018 21:20

@SabaImran Я тебя не понимаю

Skizo-ozᴉʞS 11.07.2018 16:43

Не забудьте поставить

classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha02"

на уровне вашего проекта build.gradle

и положи

apply plugin: 'androidx.navigation.safeargs'

на уровне вашего приложения build.gradle.

.................

android:defaultValue не является обязательным

Согласно документации, я заменил

<argument
        ...
        app:type = "string"
        .../>

к

<argument
        ...
        app:argType = "string"
        .../>

и это сработало для меня.

В моем случае я переместил класс, который использовал как Argument, из одного пакета в другой. Чтобы решить проблему, я переписал правильный путь для класса внутри app:argType.

Эта проблема возникает из-за того, что даже если вы нажмете «Refractor» при перемещении класса из пакета в другой, путь внутри app:argType не изменится.

Другие вопросы по теме