Почему срез не отображается в apk sliceviewer, когда setPrimaryAction не используется в конструкторе строк

Я не могу отобразить срез в приложении для просмотра срезов, когда setPrimaryAction не задано в конструкторе строк

    list(context, sliceUri, ListBuilder.INFINITY)
    {
        header {
            title ="News Content"
        }
        row {
            title = "news genre"
            subtitle = "first new headlines"
        }            
    }

Приведенный выше фрагмент не отображает слайс в программе просмотра слайсов.

тогда как, если я изменю код, добавив primaryAction в одну из строк. Slice рендерится, но для моего сценария я не хочу устанавливать какие-либо действия

    list(context, sliceUri, ListBuilder.INFINITY)        
    {
        header {
            title ="News Content"
        }
        row {
            title = "news genre"
            subtitle = "first new headlines"
            setPrimaryAction = SliceAction.create(
             PendingIntent.getActivity(
             context, 0, Intent(context, MyActivityClass::class.java), 0
             ),         
             IconCompat.createWithResource(context,
              R.drawable.ic_launcher_foreground),
             ListBuilder.ICON_IMAGE,
             "Open App"
             )
        }
  } 

Приведенный выше фрагмент отображает фрагмент в режиме просмотра слайсов.

Я хотел бы понять, почему мы должны установить primaryAction. Там может быть несколько случаев, когда нам не нужно никаких действий

1 ответ

Решение

Согласно официальной документации Android, действия Slice считаются самым основным элементом шаблона Slice.

Поэтому, когда мы не устанавливаем основное действие, возникает следующее исключение

java.lang.IllegalStateException: срез требует основного действия; убедитесь, что один из ваших сборщиков вызвал #setPrimaryAction с допустимым SliceAction.

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

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