[코틀린] 클릭시 웹페이지 열기, 페이지주소 변수 넣기

조회수 1488회

코틀린 초보 입니다.

현재 코틀린 프로젝트에서 gson 을 사용해서 DB 서버에서 데이터를 가져오는것 까지는 성공 하였고 리사이클러 뷰에 텍스트로 나오는것까지는 확인하였습니다.

제가 하고 싶은것은 해당 view를 클릭 했을때 DB에서 가져온 링크 주소로 접속이 되게 하고 싶습니다.

현재 println(user8.URI) 에 의해서 제가 연결하고자하는 주소는 잘 출력이 되는데

val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://naver.com")) 에서 http://naver.com 대신에 해당 주소를 기입하고자 하는데 잘되지 않습니다. 네이버는 잘열립니다.

val intent = Intent(Intent.ACTION_VIEW, Uri.parse(user8.URI)) 이런식으로 하면 될 줄알았는데 되지 않아 문의드립니다.

클레스가 나누어져 있어서 그런건지... 초보라 감이오질 않습니다.. 도와주시면 감사하겠습니다.

class MainAdapter(var homeFeed: HomeFeed): RecyclerView.Adapter<CustomViewHolder>() {


    override fun getItemCount(): Int {
        return homeFeed.user8.count()
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
        //How do we even create a view
        val layoutInflater = LayoutInflater.from(parent.context)
        val cellForRow = layoutInflater.inflate(R.layout.video_row, parent, false)
        return CustomViewHolder(cellForRow)
    }

    override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {

        val user8 = homeFeed.user8.get(position)
        holder?.view?.id_NAME.text = user8.NAME
        holder.view.id_TYPE.text = user8.TYPE
        holder.view.id_DATE.text = user8.DATE
        holder.view.id_PLACE.text = user8.PLACE
        holder.view.id_URI.text = user8.URI

        println(user8.URI)


    }

}

class CustomViewHolder(val view: View): RecyclerView.ViewHolder(view) {

    init {
        view.setOnClickListener {
            println("TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
            val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://naver.com"))

            view.context.startActivity(intent)

        }
    }

}
  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 코틀린이면 안드로이드 개발이실거 같습니다. 안드로이드 정책상 외부인터넷에 접근하기 위해서는 Manifest.xml 에 인터넷 퍼미션을 지정해주셔야 할거 같은데 그 부분에 본문에 없어 혹시 몰라 남깁니다. https://developer.android.com/reference/android/Manifest.permission 김호원 2020.3.6 09:26
  • 질문에 내용이 좀 부족했던거 같습니다 링크페이지가 안열린다는 내용은 아니며 잘열리고 있는 네이버 주소가 아니라 제가 지정한 변수(user8.URI)의 링크로 이동하고 싶습니다. 권한같은 설정은 잘되어 있어 네이버가 정상으로 열리는건 확인된 상황입니다. 단순히 val intent = Intent(Intent.ACTION_VIEW, Uri.parse(user8.URI)) 이런식으로 하면 될 줄알았는데 되지 않아 문의드립니다. 알 수 없는 사용자 2020.3.6 11:44

1 답변

  • http 로 접속할 경우 안 될 경우가 있습니다. https 주소를 사용 하시거나 http 접속을 허용해 주세요.

    관련자료 블로그

    그리고 잘 되지 않으시다는게 어떻게 잘 안되는지 적어주시기 바랍니다.

    • 질문에 내용이 좀 부족했던거 같습니다 링크페이지가 안열린다는 내용은 아니며 권한같은 설정은 잘되어 있어 네이버가 정상으로 열리는건 확인된 상황입니다. 잘열리고 있는 네이버 주소가 아니라 제가 지정한 변수(user8.URI)의 링크로 이동하고 싶습니다. 단순히 val intent = Intent(Intent.ACTION_VIEW, Uri.parse(user8.URI)) 이런식으로 하면 될 줄알았는데 되지 않아 문의드립니다. 알 수 없는 사용자 2020.3.6 11:46
    • 아...user8.URI 에서 user8 변수가 어댑터의 onBindViewHolder 메서드에서 선언되있는데 해당 메서드 외에서 변수를 사용할 수 없습니다. CustomViewHolder 클래스의 모든 코드를 공개하신건 아니시죠? holder.view.id_URI.text 텍스트 뷰에서 텍스트를 가져와서 Uri.parse 파라미터에 넣어보세요 김은기 2020.3.6 13:46
    • 근데... 코틀린을 몰라서 제가 하는말이 틀릴 수 도 있습니다 ㅜㅜ 김은기 2020.3.6 13:58
    • MainAdapter 와 CustomViewHolder 전체 코드 입니다 ㅠ 며칠 노력 해봣는데 잘 모르겠어요 ㅠ 알 수 없는 사용자 2020.3.6 14:23

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)