Как установить свойство модели как метку фрагмента в компоненте навигации - PullRequest
0 голосов
/ 10 апреля 2020

Я передаю модель Category в аргументах фрагмента. У модели есть два свойства: id и name.

, когда я пытаюсь установить name в качестве метки фрагмента, то есть:

android:label="{category.name}"

, которые она мне дает следующее исключение во время выполнения:

Не удалось найти category.name в Bundle [{category = Category (id = 7, name = стенд для сушки ткани)}] для заполнения метки {category.name}

1 Ответ

0 голосов
/ 10 апреля 2020

Вы также можете передать данные в компонент навигации с помощью safeargs, как показано ниже для справки. На уровне приложения build.gradle

apply plugin: 'androidx.navigation.safeargs'

На верхнем уровне build.gradle

dependencies {
classpath  'android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0'
}

На графике навигации

<fragment
    android:id="@+id/employeeDetailsFragment"
    android:name="com.example.navigationjetpacksample.fragments.EmployeeDetailsFragment"
    android:label="EmployeeDetailsFragment"
    tools:layout="@layout/frag_employee_details">
    <argument
        android:name="employee"
        app:argType="com.example.navigationjetpacksample.models.Employee"
        android:defaultValue="@null"
        app:nullable="true"/>
</fragment>

отправка аргументов из одного фрагмента в другой

val action = EmployeesListFragmentDirections.actionEmployeesListFragmentToEmployeeDetailsFragment(getEmployee)
            view.findNavController().navigate(action)

и в вашем приемнике фрагмент

val args : EmployeeDetailsFragmentArgs by navArgs()

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val binding : FragEmployeeDetailsBinding = DataBindingUtil.inflate(inflater,
            R.layout.frag_employee_details,container,false)
        binding.employee = args.employee
        return binding.root
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...