커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
2-5차 로또예제 실행문제입니다
[왕초보] Kotlin으로 만드는 공공데이터 활용 안드로이드 앱
2주차
북마크
남*호
댓글
16
추천
0
조회수
79
조회수
79
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


로또예제 완성 앱에서 실행하면 인스톨은 성공하였다고 나오는데

화면과 같이 "로또 정보를 가져오는데 실패 하였습니다. 잠시후 다시 이용해 주세요" 표시되고 멈춤니다.

로또정보를 왜 못가져오는지 모르겠습니다.

스파르타 즉문즉답
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingHorizontal="30dp"
    android:textColor="#FF000000"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="36dp"
        android:layout_marginTop="60dp"
        android:background="@drawable/title_background"
        android:foregroundTint="#747676"
        android:gravity="center"
        android:paddingHorizontal="15sp"
        android:text="@string/headline"
        android:textColor="#FFFFFFFF"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/search_view"
        android:layout_width="280dp"
        android:layout_height="35dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="124dp"
        android:layout_marginEnd="8dp"
        android:background="#E4EBF0"
        android:hint="@string/numbers"
        android:importantForAutofill="no"
        android:inputType="numberDecimal"
        android:paddingHorizontal="20dp"
        android:textSize="12sp"
        app:layout_constraintEnd_toStartOf="@id/search_button"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageButton
        android:id="@+id/search_button"
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:layout_marginEnd="8dp"
        android:background="@drawable/circle_background"
        android:contentDescription="@+id/search_button"
        android:scaleType="center"
        android:src="@drawable/ic_search"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="@id/search_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/search_view"
        app:layout_constraintTop_toTopOf="@id/search_view"
        app:layout_constraintVertical_bias="1.0" />

    <TextView
        android:id="@+id/win_result_text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="44dp"
        android:gravity="center_horizontal"
        android:textSize="31sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/search_view"
        tools:text="23회 당첨 결과" />

    <TextView
        android:id="@+id/date_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:gravity="center_horizontal"
        android:text="@string/textview"
        android:textColor="#6A7177"
        android:textSize="20sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/win_result_text_view"
        tools:layout_editor_absoluteY="166dp"
        tools:text="2023-12-23" />

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/win_numbers_layout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="28dp"
        android:background="@drawable/rectangle_background"
        android:backgroundTint="#FFFFFF"
        android:paddingHorizontal="27dp"
        android:paddingVertical="26dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/date_view">

        <TextView
            android:id="@+id/win_number_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="@string/winNum"
            android:textColor="#5F666B"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageView
            android:id="@+id/arrow_left"
            android:layout_width="20dp"
            android:layout_height="14dp"
            android:layout_gravity="center"
            android:layout_margin="3dp"
            android:background="@drawable/ripple_background"
            android:contentDescription="@+id/arrow_left"
            android:gravity="center"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_arrow_left"
            app:layout_constraintBottom_toBottomOf="@id/number_layout_2"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@id/number_layout_1" />


        <ImageView
            android:id="@+id/arrow_right"
            android:layout_width="20dp"
            android:layout_height="14dp"
            android:layout_gravity="center"
            android:layout_margin="3dp"
            android:background="@drawable/ripple_background"
            android:contentDescription="@+id/arrow_right"
            android:gravity="center"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_arrow_right"
            app:layout_constraintBottom_toBottomOf="@id/number_layout_2"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="@id/number_layout_1" />

        <LinearLayout
            android:id="@+id/number_layout_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="22dp"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/win_number_text">

            <TextView
                android:id="@+id/number_1_text"
                android:layout_width="53dp"
                android:layout_height="53dp"
                android:layout_margin="3dp"
                android:layout_weight="1"
                android:background="@drawable/number_background_blue"
                android:gravity="center"
                android:includeFontPadding="false"
                android:text="@string/No1"
                android:textColor="#FFFFFF"
                android:textSize="27sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/number_2_text"
                android:layout_width="53dp"
                android:layout_height="53dp"
                android:layout_margin="3dp"
                android:layout_weight="1"
                android:background="@drawable/number_background_blue"
                android:gravity="center"
                android:includeFontPadding="false"
                android:text="@string/No2"
                android:textColor="@color/white"
                android:textSize="27sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/number_3_text"
                android:layout_width="53dp"
                android:layout_height="53dp"
                android:layout_margin="3dp"
                android:layout_weight="1"
                android:background="@drawable/number_background_red"
                android:gravity="center"
                android:includeFontPadding="false"
                android:text="@string/No3"
                android:textColor="#FFFFFF"
                android:textSize="27sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/number_4_text"
                android:layout_width="53dp"
                android:layout_height="53dp"
                android:layout_margin="3dp"
                android:layout_weight="1"
                android:background="@drawable/number_background_red"
                android:gravity="center"
                android:includeFontPadding="false"
                android:text="@string/No4"
                android:textColor="#FFFFFF"
                android:textSize="27sp"
                android:textStyle="bold" />
        </LinearLayout>

        <!-- 두 번째 가로 LinearLayout -->
        <LinearLayout
            android:id="@+id/number_layout_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/number_layout_1">

            <TextView
                android:id="@+id/number_5_text"
                android:layout_width="53dp"
                android:layout_height="53dp"
                android:layout_margin="3dp"
                android:background="@drawable/number_background_gray"
                android:gravity="center"
                android:includeFontPadding="false"
                android:text="@string/No5"
                android:textColor="#FFFFFF"
                android:textSize="27sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/number_6_text"
                android:layout_width="53dp"
                android:layout_height="53dp"
                android:layout_margin="3dp"
                android:background="@drawable/number_background_gray"
                android:gravity="center"
                android:includeFontPadding="false"
                android:text="@string/No6"
                android:textColor="#FFFFFF"
                android:textSize="27sp"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/plus_view"
                android:layout_width="53dp"
                android:layout_height="15dp"
                android:layout_gravity="center"
                android:layout_margin="3dp"
                android:contentDescription="@+id/plus_view"
                android:includeFontPadding="false"
                android:gravity="center"
                android:scaleType="fitCenter"
                android:src="@drawable/ic_plus"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/number_bonus_text"
                android:layout_width="53dp"
                android:layout_height="53dp"
                android:layout_margin="3dp"
                android:includeFontPadding="false"
                android:background="@drawable/number_background_green"
                android:gravity="center"
                android:text="@string/Nob"
                android:textColor="#FFFFFF"
                android:textSize="27sp"
                android:textStyle="bold" />
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="28dp"
        android:background="@drawable/rectangle_background"
        android:paddingHorizontal="27dp"
        android:paddingVertical="20dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/win_numbers_layout">

        <ImageView
            android:id="@+id/icon_star"
            android:layout_width="16dp"
            android:layout_height="16dp"
            android:contentDescription="@+id/icon_star"
            android:src="@drawable/ic_inside_star"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/win_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:text="@string/win_1"
            android:textColor="#666666"
            android:textStyle="bold"
            app:layout_constraintBottom_toBottomOf="@id/icon_star"
            app:layout_constraintStart_toEndOf="@id/icon_star"
            app:layout_constraintTop_toTopOf="@id/icon_star" />

        <TextView
            android:id="@+id/win_amount_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:gravity="center_horizontal"
            android:text="@string/win_prize"
            android:textSize="16sp"
            android:textColor="#3A3E41"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/win_text" />

        <TextView
            android:id="@+id/win_1_amount_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:gravity="center_horizontal"
            android:text="@string/win_prize_1"
            android:textColor="#6A7177"
            android:textSize="14sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/win_amount_text" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>




package com.example.lottoapp

import android.os.Bundle
import android.text.Html
import android.text.Html.FROM_HTML_MODE_COMPACT
import android.text.Spanned
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
import com.example.lottoapp.data.LottoData
import com.example.lottoapp.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    private var number: Int = 1103private lateinit var binding: ActivityMainBindingprivate val lottoController by lazy { LottoController() }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        fetchLottoData(number)
        with(binding) {
            searchButton.setOnClickListener {
                number = searchView.text.toString().toInt()
                fetchLottoData(number)
            }

            arrowLeft.setOnClickListener {
                number = number.dec()
                fetchLottoData(number)
            }

            arrowRight.setOnClickListener {
                number = number.inc()
                fetchLottoData(number)
            }
        }
    }

    private fun fetchLottoData(number: Int) {
        lottoController.getLottoNumber(number, { lottoData ->
            updateUI(lottoData)
        }, { _ ->
            Toast.makeText(
                this@MainActivity,
                "로또 정보를 가져오는데 실패했습니다. 잠시 후 다시 이용해주세요.",
                Toast.LENGTH_LONG
            ).show()
        })
    }

    private fun updateUI(data: LottoData) {
        with(binding) {
            winResultTextView.text = getHtmlText(R.string.winning_result, number.toString())
            dateView.text = data.data
            val listWinNumberView =
                listOf(number1Text, number2Text, number3Text, number4Text, number5Text, number6Text)
            listWinNumberView.mapIndexed { index, tv ->
                val numbers = data.winNumbers
                tv.text = if (numbers.isNotEmpty()) numbers[index] else ""
            }
            numberBonusText.text = data.bonusNumber
            val prize = data.totalWinPrize.toBillion()
            winAmountText.text = getHtmlText(R.string.win_prize, prize)
            val prizeOne = data.winPrize.toBillion()
            win1AmountText.text = getHtmlText(R.string.win_prize_1, prizeOne)
        }
    }

    private fun String.toBillion(): String {
        return if (this != "") (this.toLong() / 100_000_000).toString() else this
    }

    private fun getHtmlText(@StringRes id: Int, data: String): Spanned {
        val text: String = getString(id, data)
        return Html.fromHtml(text, FROM_HTML_MODE_COMPACT)
    }
}
취소
 공유
취소
댓글 0
댓글 알림
나의얼굴