{"id":97,"date":"2025-10-01T19:06:52","date_gmt":"2025-10-01T10:06:52","guid":{"rendered":"https:\/\/devserver.kr\/blog\/?p=97"},"modified":"2025-10-01T19:06:52","modified_gmt":"2025-10-01T10:06:52","slug":"%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c-viewbinding","status":"publish","type":"post","link":"https:\/\/devserver.kr\/blog\/android\/%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c-viewbinding\/","title":{"rendered":"\uc548\ub4dc\ub85c\uc774\ub4dc viewBinding"},"content":{"rendered":"\n<div class=\"wp-block-jetpack-markdown\"><p>build.gradle (app:)<\/p>\n<pre><code class=\"language-gradle\">android {\n   ...\n   viewBinding {\n      enabled = true\n   }\n}\n<\/code><\/pre>\n<h3>Activity \uc5d0\uc11c\u2026<\/h3>\n<pre><code class=\"language-kotlin\">private lateinit var binding: ResultProfileBinding\n\noverride fun onCreate(savedInstanceState: Bundle) {\n    super.onCreate(savedInstanceState)\n    binding = ResultProfileBinding.inflate(layoutInflater)\n    val view = binding.root\n    setContentView(view)\n}   \n<\/code><\/pre>\n<pre><code class=\"language-kotlin\">binding.name.text = viewModel.name\nbinding.button.setOnClickListener { viewModel.userClicked() }\n<\/code><\/pre>\n<h3>Fragment \uc5d0\uc11c\u2026<\/h3>\n<pre><code class=\"language-kotlin\">private var _binding: ResultProfileBinding? = null\n\/\/ This property is only valid between onCreateView and\n\/\/ onDestroyView.\nprivate val binding get() = _binding!!\n\noverride fun onCreateView(\n    inflater: LayoutInflater,\n    container: ViewGroup?,\n    savedInstanceState: Bundle?\n): View? {\n    _binding = ResultProfileBinding.inflate(inflater, container, false)\n    val view = binding.root\n    return view\n}\n\noverride fun onDestroyView() {\n    super.onDestroyView()\n    _binding = null\n}\n    \n<\/code><\/pre>\n<pre><code class=\"language-kotlin\">binding.name.text = viewModel.name\nbinding.button.setOnClickListener { viewModel.userClicked() }    \n<\/code><\/pre>\n<h3>\ud2b9\uc815 layout \uc5d0\uc11c\ub294 viewBinding\uc744 \ud558\uace0 \uc2f6\uc9c0\uc54a\ub2e4\uba74\u2026<\/h3>\n<pre><code class=\"language-xml\">&lt;LinearLayout\n    ...\n    tools:viewBindingIgnore=&quot;true&quot; &gt;\n    ...\n&lt;\/LinearLayout&gt;\n    \n<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-97","post","type-post","status-publish","format-standard","hentry","category-android"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/posts\/97","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/comments?post=97"}],"version-history":[{"count":1,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/posts\/97\/revisions"}],"predecessor-version":[{"id":98,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/posts\/97\/revisions\/98"}],"wp:attachment":[{"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/media?parent=97"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/categories?post=97"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/tags?post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}