我在我的应用程序中使用带有导航的片段。我有 mainFragment 类和 adminPwdFragment 类。我想通过按界面上的按钮从 mainFragment 转到 adminPwdFragment。但点击按钮时我总是收到此错误:
\n\n\n\n\n2020-05-16 17:12:53.302 1423-1423/com.example.lejosremote E/AndroidRuntime: 致命异常: main\n 进程: com.example.lejosremote, PID: 1423\n java.lang.ClassCastException: com. example.lejosremote.databinding.MainFragmentBindingImpl 无法转换为位于 com.example.lejosremote.admin_pwd.onCreateView(admin_pwd.kt:20)\n 的 androidx.fragment.app.Fragment 的 com.example.lejosremote.databinding.AdminPwdFragmentBinding\n。 PerformCreateView(Fragment.java:2698)\n 在 androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:310)\n 在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1185)\n 在 androidx .fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2222)\n 在 androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1995)\n 在 androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java :1951)\n 在 androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1847)\n 在 androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)\n 在 android.os.Handler .handleCallback(Handler.java:790)\n 在 android.os.Handler.dispatchMessage(Handler.java:99)\n 在 android.os.Looper.loop(Looper.java:164)\n 在 android.app。 ActivityThread.main(ActivityThread.java:6494)\n 在 java.lang.reflect.Method.invoke(本机方法)\n 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)\ n 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
\n
这是课程
\n\nclass MainFragment : Fragment() {\n\nprivate lateinit var viewModel: MainViewModel\n\nprivate lateinit var binding: MainFragmentBinding\n\noverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,\n savedInstanceState: Bundle?): View {\n // Inflate view and obtain an instance of the binding class\n binding = DataBindingUtil.inflate(\n inflater,\n R.layout.main_fragment,\n container,\n false\n )\n\n // ligne pour cr\xc3\xa9er le ViewModel une seule fois\n viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)\n\n binding.mainViewModel = viewModel\n binding.lifecycleOwner = this\n\n viewModel.eventAdmin.observe(viewLifecycleOwner, Observer { admin ->\n if (admin) {\n findNavController().navigate(MainFragmentDirections.actionMainFragmentToAdminPwd())\n }\n })\n\n return binding.root\n}\nRun Code Online (Sandbox Code Playgroud)\n\nadmin_pwd 用于另一个片段:
\n\nclass admin_pwd : Fragment() {\n\nprivate lateinit var viewModel: AdminPwdViewModel\nprivate lateinit var viewModelFactory: AdminPwdViewModelFactory\n\noverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n val binding: AdminPwdFragmentBinding = DataBindingUtil.inflate(\n inflater,\n R.layout.main_fragment,\n container,\n false\n )\n\n\n viewModelFactory = AdminPwdViewModelFactory()\n viewModel = ViewModelProviders.of(this).get(AdminPwdViewModel::class.java)\n\n binding.mainViewModel = viewModel\n binding.lifecycleOwner = this\n return binding.root\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我究竟做错了什么 ?我怎样才能摆脱这个错误并使导航发生?
\nadmin_pwd在片段中更改此内容
val binding: AdminPwdFragmentBinding = DataBindingUtil.inflate(
inflater,
R.layout.main_fragment,
container,
false
)
Run Code Online (Sandbox Code Playgroud)
到
val binding: AdminPwdFragmentBinding = DataBindingUtil.inflate(
inflater,
R.layout.admin_pwd_fragment,
container,
false
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5333 次 |
| 最近记录: |