강의

멘토링

로드맵

Inflearn Community Q&A

ipari's profile image
ipari

asked

[Beginner] Creating an Android Community App (Android Kotlin)

storeTap에 네비게이션 바인딩 적용하는 방법좀 알려주세요

Written on

·

255

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)
        }
}
androidkotlinfirebase

Answer 1

1

bokchi님의 프로필 이미지
bokchi
Instructor

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

참고해보시겠어요?

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

ipari님의 프로필 이미지
ipari
Questioner

코드를 이렇게 쳤는데 메뉴를 클릭하면 앱이 죽습니다.. 무엇이 잘못됐을까요?

(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

    }
}
bokchi님의 프로필 이미지
bokchi
Instructor

맨 밑에

return view
        return binding.root

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

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

ipari님의 프로필 이미지
ipari
Questioner

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

bokchi님의 프로필 이미지
bokchi
Instructor

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

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

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

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

ipari's profile image
ipari

asked

Ask a question