kotlinでFragmentを書いてみる時に見るべき所
kotlinでFragmentを書いてみる
何度も何度もつまづくので、触る場所だけをピックアップしました。
使うファイル
MainActivity.kt
activity_main.xml
WebViewFragment.kt
fragment_web_view.xml
使うファイルと見る場所
MainActivity.kt
①
override fun onCreate(savedInstanceState: Bundle?) {
fragmentbutton.setOnClickListener{
val transaction = supportFragmentManager.beginTransaction()
transaction.add(R.id.fragment_layout, WebViewFragment.createInstance())
transaction.addToBackStack(null)
transaction.commit()
}
}
class MainActivity : AppCompatActivity() {
private lateinit var webView: WebView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fragmentbutton.setOnClickListener{
val transaction = supportFragmentManager.beginTransaction()
transaction.add(R.id.fragment_layout, WebViewFragment.createInstance())
transaction.addToBackStack(null)
transaction.commit()
}
}
}
WebViewFragment.kt
①
companion object {
fun createInstance(): WebViewFragment {
return WebViewFragment()
}
}
②
override fun onCreateView(
return inflater.inflate(R.layout.fragment_web_view, container, false)
)
class WebViewFragment : Fragment() {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null
companion object {
fun createInstance(): WebViewFragment {
return WebViewFragment()
}
}
// → Fragment生成時にシステムが呼び出す(必須)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
}
// → Fragmentが初めてUIを描画する時にシステムが呼び出す(必須)
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_web_view, container, false)
}
// Viewの生成が完了した後に呼ばれる
// UIパーツの設定などを行う
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
top_text.text = "berwpfiuwrbfpuhaeriugfh8"
}
}