Безопасно ли передавать NavigationController как ссылку в пользовательском представлении? - PullRequest
1 голос
/ 31 января 2020

Я новичок в программировании android, и я создал пользовательский вид, отображающий нижнее меню. Я должен сделать это на заказ (без компонентов материала) для нужд.

The bottom menu

Цель этого пользовательского представления - позволить пользователю перемещаться по некоторым фрагментам этот дескриптор определяет c пользовательских опций.

Я реализовал его в MainActivity (единственном действии для приложения), так как он должен отображаться только в некотором фрагменте в середине приложения (фрагменты для информация для клиентов).

Основная проблема заключалась в создании навигации для настраиваемого представления. Основной ошибкой в ​​начале было

 View com.customviews.customerbottom.CustomMenuView{c9abff2 V.E...... ........ 26,1573-1054,1678 #7f0a00c1 app:id/customer_bottom_menu} does not have a NavController set

. Для решения этой проблемы я передал NavController из MainActivity в CustomView через установщик.

MainActivity Code

override fun onCreate(savedInstanceState: Bundle?) {
   // {... Other Setup Code...}
    // Ref to the navigation
    navController = this.findNavController(R.id.myNavHostFragment)

    // Ref to the custom view
    customMenuView = binding.customerBottomMenu

    // Setter method
    customMenuView.setNavController(navController)

   // {... Other Setup Code...}
    }

Код пользовательского просмотра

class CustomMenuView : LinearLayout {

  private var navController : NavController? = null
  private var clickableIcon : CustomMenuViewIcon? = null

  //{constructors}

  override fun onFinishInflate(){
    //{ inflatter and layout creation}

    clickableIcon =
          inflater.inflate(R.layout.single_icon_bottom_menu, this, false) as 
          CustomerMenuIconView?

     clickableIcon?.setOnClickListener{
          navController?.navigate(*ToDestination)
     }
  }

   fun setNavController(nc : NavController){
       navController = nc   
   }
}

Вопрос: насколько опасно проходить таким образом navController? Следует ли мне избегать этого способа навигации с помощью пользовательских представлений?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...