1、activity_main.xml
2、MainActivity
/*** kotlin_jetpack_navigation* 使用navigation + dataBinding + viewModel* 三个fragment共享一个viewModel中的数据,在NavigationView中显示*/
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}

nav_graph.xml
1、fragment_home.xml
2、HomeFragment
class HomeFragment : Fragment() {override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {// Inflate the layout for this fragment
// val myViewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)val myViewModel by activityViewModels()val binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false)binding.also {it.data = myViewModelit.lifecycleOwner = activityit.button.setOnClickListener { v ->val controller = Navigation.findNavController(v)controller.navigate(R.id.action_homeFragment_to_detailFragment)}myViewModel.get().value?.also { numberValue ->it.seekBar.progress = numberValue}it.seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {myViewModel.set(p1)}override fun onStartTrackingTouch(p0: SeekBar?) {}override fun onStopTrackingTouch(p0: SeekBar?) {}})}return binding.root}
1、fragment_detail.xml
data.count(1)}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toStartOf="@+id/jian"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline" />data.count(-1)}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/add"app:layout_constraintTop_toTopOf="@+id/guideline" />
2、DetailFragment
class DetailFragment : Fragment() {override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {// Inflate the layout for this fragment
// val myViewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)val myViewModel by activityViewModels()val binding = DataBindingUtil.inflate(inflater,R.layout.fragment_detail,container,false)binding.also {it.data = myViewModelit.lifecycleOwner = activityit.button3.setOnClickListener { v ->val controller = Navigation.findNavController(v)controller.navigate(R.id.action_detailFragment_to_homeFragment)}}return binding.root}}
class MyViewModel : ViewModel() {var number: MutableLiveData = MutableLiveData(0)fun get() = numberfun set(result: Int) {number.value = result}fun count(x: Int) {number.value = number.value?.plus(x)if (number.value!! < 0)number.value = 0}
}