无法使用Kotlin访问EditText或其他UI组件

我正在使用Android Studio 3.0 RC2&Kotlin。

当我尝试访问一个UI组件时,应用程序崩溃,除非我先写findViewById。 我以为Kotlin应该摆脱不得不写的findViewById线? 用户界面是一个fragment ,我试图从相同的fragment代码访问。 有没有办法不必写findViewById?

这些线路工作:

 var userNameField = view?.findViewById<EditText>(R.id.userNameTextField) as EditText userNameField.setText("hello world") 

没有findViewById行这行不工作

 userNameTextField.setText("hello world") 

我什至有

 import kotlinx.android.synthetic.main.fragment_sign_in.* 

onCreateView()代码:

  override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment var view = inflater!!.inflate(R.layout.fragment_sign_in, container, false) var userNameField = view?.findViewById<EditText>(R.id.userNameTextField) as EditText userNameField.setText("hello world") return view } 

在onCreateView只是返回充气的看法。

 override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment return inflater!!.inflate(R.layout.fragment_sign_in, container, false) } 

在onViewCreated中,您可以访问您的视图组件

 override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { userNameField.setText("hello world") }