如何从片段中的xml获取EditText值?

时间:2021-01-18 19:32:53

标签: android kotlin

到目前为止我尝试过的:

getString(R.id.editBrand) => 这返回 false(R.id.editBrand 返回一个长数)

view.findViewById(R.id.editBrand) => 运行到 nullreference

任何帮助将不胜感激,谢谢!

我的整个片段:

class CreateFragment : Fragment() {

    @SuppressLint("ResourceType")
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        val binding = DataBindingUtil.inflate<FragmentCreateBinding>(inflater,
                R.layout.fragment_create,container,false)
        val application = requireNotNull(this.activity).application
        val dataSource = CarDatabase.getInstance(application).carDatabaseDao
        val viewModelFactory = CarViewModelFactory(dataSource, application)

        val carViewmodel =
                ViewModelProvider(
                        this, viewModelFactory).get(CarViewmodel::class.java)
        val adapter = CarAdapter()


        binding.submitButton.setOnClickListener { view : View ->
            view.findNavController().navigate(R.id.action_createFragment_to_readFragment)

            carViewmodel.onCreated(12, view.findViewById<EditText>(R.id.editBrand).editBrand.toString(), "blue")
        }
    
        binding.setLifecycleOwner(this)

        return binding.root
    }
}

1 个答案:

答案 0 :(得分:1)

使用

binding.editBrand.text.toString()

因为 binding 是此处对您的布局的引用。

如果您使用 view.findViewById<EditText>view 指的是 submitButton 并在其上调用 findViewById 将查找子视图。

getString() 将字符串资源作为参数而不是视图资源。

相关问题