• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

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

답변을 작성해보세요.

1

Android View에 대한 접근 1-6이라고 유튜브에 영상을 올려놨습니다

참고해보시겠어요?

https://www.youtube.com/watch?v=ADYuTeFB9Lo&t=22s

신영현님의 프로필

신영현

질문자

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

    }
}

맨 밑에

return view
        return binding.root

두가지를 모두 사용하지 마시고, binding만 사용하시거나, view만을 사용하셔야 합니다.

다른 fragment를 참고해보시겠어요?

신영현님의 프로필

신영현

질문자

2022.10.24

그럼 웹뷰랑 바인딩 두 가지는 모두 사용할 수 없는건가여?

우선 웹뷰와 바인딩에 대한 개념을 잘 이해하지 못하신 것 같습니다.

위의 제가 바꾸라고 말씀드린 부분은 문법상의 차이입니다.

findViewById를 대신하여 binding를 사용하셨다면 binding의 문법을 따라서 적용해주시면 됩니다.

다시한번 다른 fragment를 보면서 어떻게 코드를 작성했는지 참고해보시겠어요?