Получение пустого списка во фрагменте с навигационными аргументами

#android #kotlin #android-fragments

#Android #kotlin #android-фрагменты

Вопрос:

Я передаю объект класса модели из одного фрагмента в другой фрагмент. Я могу успешно получить «CustomerName» в получаемом фрагменте, но список всегда пуст. Это класс модели:

 @Parcelize
data class Bill (var customerName:String,var listOfStart:List<Int>):Parcelable
  

Фрагмент кода отправляющего фрагмента:

  customerName = etName.editText?.text.toString()
            start = etStart.editText?.text.toString().toInt()
            listOfStart.add(start)

            val bill=Bill(customerName,listOfStart)
            Log.d("Test", "Name  when sending: " customerName)
            Log.d("Test", "List contents when sending: " listOfStart)
            val action: NavDirections =HomeFragmentDirections.actionHomeFragmentToResultFragment(bill)
            findNavController().navigate(action)
  

Фрагмент кода принимающего фрагмента:

  private val fragmentArgs by navArgs<ResultFragmentArgs>()
 override fun onViewCreated(view: View, savedInstanceState: Bundle?)
{

   Log.d("Test", "Name when receiving": " fragmentArgs.args.customerName)
   Log.d("Test", "List contents when receiving": " fragmentArgs.args.listOfStart)
 }
  

Журнал cat

 2020-10-26 12:16:17.786 14893-14893/tahir.billcalculator D/Test: Name  when sending: Nametest
2020-10-26 12:16:17.786 14893-14893/tahir.billcalculator D/Test: List contents when sending: [12]
2020-10-26 12:16:17.878 14893-14893/tahir.billcalculator D/Test: Name when receiving: Nametest
2020-10-26 12:16:17.878 14893-14893/tahir.billcalculator D/Test: List contents when receiving: []
  

Комментарии:

1. привет из вашего logcat видно, что в первый раз вы получили свой список List contents when sending: [12] здесь, но во второй раз вы ничего не получили, что означает, что может возникнуть какая-то проблема при добавлении данных в список во второй раз. Я бы посоветовал попробовать указать точку отладки на этом val action: NavDirections =HomeFragmentDirections.actionHomeFragmentToResultFragment(bill) и в вашем viewCreated методе, чтобы проверить, являются ли переданные и полученные данные правильными или нет.

2. Я проверил, как вы предложили. Он передает данные правильно. Но на принимающей стороне принимается только имя, а список пуст

3. Отправьте определение HomeFragmentDirections.actionHomeFragmentToResultFragment(счет) . Что вы делаете в этом методе