Вызов метода активности от проводника
У меня есть активность с zsmb:materialdrawer
а также conductor
class MenuActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_menu)
router = Conductor.attachRouter(this, container, savedInstanceState)
if (!router.hasRootController()){
router.setRoot(RouterTransaction.with(HomeController()))
}
}
fun addDrawerItem() {
// not implemented
}
private fun initViews(savedInstanceState: Bundle?) {
toolbarMenu.setTitle(R.string.menu_title)
drawerResult = drawer {
primaryItem(getString(R.string.public_chats)){
identifier = 101
icon = R.drawable.abc_ic_star_black_48dp
onClick(pushController(ChatRoomsController()))
}
primaryItem(getString(R.string.private_chats)){
identifier = 102
icon = R.drawable.abc_ic_star_black_48dp
onClick(openActivity(ChatListActivity::class))
}
}
}
}
class HomeController: Controller() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View {
mView = inflater.inflate(R.layout.controller_sign_in, container, false)
val signInWithGoogle = mView.findViewById<Button>(R.id.sign_in_with_google)
signInWithGoogle?.setOnClickListener({
// handle action with drawer here
// mView.addDrawerItem()
})
return mView
}
}
И я хочу позвонить моему Activity
метод из conductor
, Я пытаюсь казнить mView.addDrawerItem()
но этот метод не доступен там. Насколько я знаю conductor
является заменой фрагмента и в fragment
Я могу легко позвонить activity
метод через interface
, Какова лучшая практика, чтобы сделать это в conductor
?
2 ответа
Решение
Контроллеры проводников имеют getActivity()
метод, как фрагменты. Вы сделали бы то же самое, используете ли вы контроллер или фрагмент.
Используйте либо Conductor, либо Fragment, оба сделают то же самое для вас...