use*_*205 5 android kotlin kotlin-extension android-studio-3.0
我正在使用Android Studio 3.0 RC2和Kotlin.
当我尝试访问UI组件时,应用程序崩溃,除非我首先编写findViewById.我以为Kotlin应该摆脱不得不写findViewById
线?UI是一个fragment
,我试图从相同的fragment
代码访问.有没有办法不用写findViewById?
这些行有效:
var userNameField = view?.findViewById<EditText>(R.id.userNameTextField) as EditText
userNameField.setText("hello world")
Run Code Online (Sandbox Code Playgroud)
没有findViewById行,此行不起作用
userNameTextField.setText("hello world")
Run Code Online (Sandbox Code Playgroud)
我甚至有
import kotlinx.android.synthetic.main.fragment_sign_in.*
Run Code Online (Sandbox Code Playgroud)
该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
}
Run Code Online (Sandbox Code Playgroud)
在 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)
}
Run Code Online (Sandbox Code Playgroud)
在 onViewCreated 中你可以访问你的视图组件
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
userNameField.setText("hello world")
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
625 次 |
最近记录: |