2017-10-23 14 views
3

私はAndroid Studio 3.0 RC2 & Kotlinを使用しています。KotlinでEditTextや他のUIコンポーネントにアクセスできない

UIコンポーネントにアクセスしようとすると、最初にfindViewByIdを書き込まない限りアプリがクラッシュします。私はコトリンがfindViewById行を書かなくてはならないと思いましたか? UIは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()コードを持っています

+1

にアクセスすることができます。 – Sufian

+1

'onCreate'メソッドを表示 – HassanUsman

+0

あなたはどちらのkotlinバージョンを使用していますか? – pRaNaY

答えて

0

onCreateViewで、膨張したビューを返します。 onViewCreatedで

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) 

} 

それは `userNameField`が` EditText`であることを知らないので、あなたのビューコンポーネント

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