-
카테고리
-
세부 분야
모바일 앱 개발
-
해결 여부
미해결
storeTap에 네비게이션 바인딩 적용하는 방법좀 알려주세요
22.10.22 07:59 작성 조회수 173
0
강의에는 없지만 웹뷰를 적용하고 이전메뉴로 돌아가는 것을 만들고 싶어요.
현재 onCreatedview 에 웹뷰가 적용되어 있는데 여기에 바인딩을 적용시키려면 어떻게 짜야 할까요???
class TalkFragment : Fragment() {
private lateinit var binding : FragmentStoreBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_store, container, false)
val webView : WebView = view.findViewById(R.id.storeWebView)
webView.loadUrl("https://www.iparimap.kr/")
binding= DataBindingUtil.inflate(inflater, R.layout.fragment_talk, container, false)
//클릭시 이동하는 곳
binding.homeTap.setOnClickListener {
it.findNavController().navigate(R.id.action_storeFragment_to_homeFragment)
}
}
답변을 작성해보세요.
1
신영현
질문자2022.10.23
코드를 이렇게 쳤는데 메뉴를 클릭하면 앱이 죽습니다.. 무엇이 잘못됐을까요?
(talktap을 치면 웹뷰를 적용한 talkFragment로 이동합니다.)
*네비게이션, 웹뷰 둘다 적용합니다.
꼭 좀 알려주세요. 부탁드려요!
class TalkFragment : Fragment() {
private lateinit var binding : FragmentStoreBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_talk, container, false)
binding.bookmarkTap.setOnClickListener {
it.findNavController().navigate(R.id.action_talkFragment_to_bookmarkFragment)
}
binding.storeTap.setOnClickListener {
it.findNavController().navigate(R.id.action_talkFragment_to_storeFragment)
}
binding.homeTap.setOnClickListener {
it.findNavController().navigate(R.id.action_talkFragment_to_homeFragment)
}
val WebView: WebView = view.findViewById(R.id.storeWebView)
WebView.webViewClient = WebViewClient()
WebView.loadUrl("https://www.inflearn.com/")
// return inflater.inflate(R.layout.fragment_talk, container, false)
return view
return binding.root
}
}
개복치개발자
지식공유자2022.10.24
맨 밑에
return view
return binding.root
두가지를 모두 사용하지 마시고, binding만 사용하시거나, view만을 사용하셔야 합니다.
다른 fragment를 참고해보시겠어요?
개복치개발자
지식공유자2022.10.26
우선 웹뷰와 바인딩에 대한 개념을 잘 이해하지 못하신 것 같습니다.
위의 제가 바꾸라고 말씀드린 부분은 문법상의 차이입니다.
findViewById를 대신하여 binding를 사용하셨다면 binding의 문법을 따라서 적용해주시면 됩니다.
다시한번 다른 fragment를 보면서 어떻게 코드를 작성했는지 참고해보시겠어요?
답변 1