我正在使用在 Google I/O 2018 上展示的 android 导航,似乎我可以通过绑定到某个视图或使用NavHost
从 Fragment 获取它来使用它。但我需要的是根据几个条件从我的第一个片段从 ViewModel 导航到另一个特定视图。对于ViewModel
,我扩展AndroidViewModel
,但我不明白下一步该怎么做。我无法getApplication
转换为 Fragment/Activity,也无法使用NavHostFragment
. 此外,我不能只将导航绑定到,onClickListener
因为startFragment
它只包含一个ImageView
. 我该如何导航ViewModel
?
class CaptionViewModel(app: Application) : AndroidViewModel(app) {
private val dealerProfile = DealerProfile(getApplication())
val TAG = "REGDEB"
fun start(){
if(dealerProfile.getOperatorId().isEmpty()){
if(dealerProfile.isFirstTimeLaunch()){
Log.d(TAG, "First Time Launch")
showTour()
}else{
showCodeFragment()
Log.d(TAG, "Show Code Fragment")
}
}
}
private fun showCodeFragment(){
//??
}
private fun showTour(){
//??
}
}
我的片段
class CaptionFragment : Fragment() {
private lateinit var viewModel: CaptionViewModel
private val navController by lazy { NavHostFragment.findNavController(this) }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
viewModel = ViewModelProviders.of(this).get(CaptionViewModel::class.java)
return inflater.inflate(R.layout.fragment_caption, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel.start()
}
}
我想在 ViewModel 中保留导航逻辑