0

I create kotlin app. Very simple : a slasp screen + custom spinner with adapter, imageView and button. All was working with the custom spinner but when I had the button and the imageView, now the app is closing after the splash screen. If you see something wrong ?

Main :

package fr.**************.*************

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        supportActionBar?.hide()

        Handler().postDelayed({
            val intent = Intent(this@MainActivity, HomeActivity::class.java)
            startActivity(intent)
            finish()
        },4000)
    }
}
<?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"
    tools:context=".MainActivity"
    android:background="@drawable/background">



</androidx.constraintlayout.widget.ConstraintLayout>

Home :

package fr.**************.************

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import kotlinx.android.synthetic.main.activity_home.*
import java.util.*

class HomeActivity : AppCompatActivity() {

    lateinit var diceImage: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)

        /*
        ********************Image*******************
         */

        val button: Button = findViewById(R.id.roll_Button)
        button.text = getString(R.string.Divination)
        button.setOnClickListener {
            rollDice()
        }

        diceImage = findViewById(R.id.dice_image)
      /*
      *******************spinner*************
       */
        setupCustomSpinner()
    }

    private fun setupCustomSpinner() {

        val adapter = CountryArrayAdapter( this, Countries.list!!)
        customSpinner.adapter = adapter
        /*
        ************spinner****************
         */
    }

    private fun rollDice() {
        val drawableResource = when (Random().nextInt(5) + 1) {

            1 -> R.drawable.d1
            2 -> R.drawable.d2
            3 -> R.drawable.d3
            4 -> R.drawable.d4
            else -> R.drawable.d5
        }
        diceImage.setImageResource(drawableResource)
    }
}
<?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"
    tools:context=".HomeActivity">

    <androidx.appcompat.widget.AppCompatSpinner
        android:id="@+id/customSpinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="150dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

    <ImageView
        android:id="@+id/dice_image"
        android:layout_width="250dp"
        android:layout_height="200dp"
        android:layout_marginStart="80dp"
        android:layout_marginLeft="80dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="81dp"
        android:layout_marginRight="81dp"
        android:layout_marginBottom="@+id/roll_Button"
        android:importantForAccessibility="no"
        app:layout_constraintBottom_toBottomOf="@+id/roll_Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:scaleType="centerInside"
        app:layout_constraintTop_toBottomOf="@+id/customSpinner"
        tools:srcCompat="R.drawable.d1" />

    <Button
        android:id="@+id/roll_Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="25dp"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="70dp"
        android:fontFamily="@font/architects_daughter"
        android:text="@string/divination"
        android:textSize="32sp"
        android:textStyle="bold"
        app:layout_constraintStart_toStartOf="@+id/dice_image"
        app:layout_constraintTop_toBottomOf="@+id/dice_image"
         />

</androidx.constraintlayout.widget.ConstraintLayout>

Spinner :

package fr.*********************.*****************

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.content.Context
import kotlinx.android.synthetic.main.spinner_item.view.*


class CountryArrayAdapter(context: Context, countrylist: List<Country>) : ArrayAdapter<Country>(context, 0, countrylist) {

    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        return initView(position, convertView, parent)
    }

    override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
        return initView(position, convertView, parent)
    }

    private fun initView(position: Int, convertView: View?, parent: ViewGroup): View {

        val country = getItem(position)

        val view = LayoutInflater.from(context).inflate(R.layout.spinner_item, parent, false)
        view.spinnerImage.setImageResource(country!!.image)
        view.spinnerName.text = country.name

        return view
    }
}
<?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="50dp"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/spinnerImage"
        android:layout_width="wrap_content"
        android:layout_height="25dp"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="16dp"
        android:adjustViewBounds="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/icon" />

    <TextView
        android:id="@+id/spinnerName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="16dp"
        android:text="Choose your Crypto"
        android:textColor="#353434"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toEndOf="@+id/spinnerImage"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

and ...

package fr.***************.****************

import java.util.*

data class Country(val image: Int, val name: String)

object Countries {

    private val images = intArrayOf(
        R.drawable.icon,
        R.drawable.inch,
        R.drawable.aave,
        R.drawable.ada,
        R.drawable.algo,
        R.drawable.amp,
        R.drawable.ankr,
        R.drawable.ape,
        R.drawable.ar,
        R.drawable.atom,
        R.drawable.avax,
        R.drawable.axs,
        R.drawable.bat,
        R.drawable.bch,
        R.drawable.bnb,
        R.drawable.bora,
        R.drawable.bsv,
        R.drawable.btc,
        R.drawable.btg,
        R.drawable.btt,
        R.drawable.busd,
        R.drawable.cake,
        R.drawable.celo,
        R.drawable.chz,
        R.drawable.comp,
        R.drawable.cro,
        R.drawable.crv,
        R.drawable.cvx,
        R.drawable.dai,
        R.drawable.dash,
        R.drawable.dcr,
        R.drawable.doge,
        R.drawable.dot,
        R.drawable.egld,
        R.drawable.enj,
        R.drawable.eos,
        R.drawable.etc,
        R.drawable.eth,
        R.drawable.fei,
        R.drawable.fil,
        R.drawable.flow,
        R.drawable.ftm,
        R.drawable.ftt,
        R.drawable.gala,
        R.drawable.glm,
        R.drawable.glmr,
        R.drawable.gmt,
        R.drawable.gno,
        R.drawable.grt,
        R.drawable.gt,
        R.drawable.hbar,
        R.drawable.hnt,
        R.drawable.hot,
        R.drawable.ht,
        R.drawable.icp,
        R.drawable.icx,
        R.drawable.iost,
        R.drawable.iotex,
        R.drawable.iotx,
        R.drawable.jst,
        R.drawable.kava,
        R.drawable.kcs,
        R.drawable.klay,
        R.drawable.knc,
        R.drawable.ksm,
        R.drawable.ldo,
        R.drawable.leo,
        R.drawable.link,
        R.drawable.lrc,
        R.drawable.ltc,
        R.drawable.mana,
        R.drawable.matic,
        R.drawable.mina,
        R.drawable.miota,
        R.drawable.mkr,
        R.drawable.near,
        R.drawable.neo,
        R.drawable.nexo,
        R.drawable.okb,
        R.drawable.omg,
        R.drawable.one,
        R.drawable.paxg,
        R.drawable.qnt,
        R.drawable.qtun,
        R.drawable.rose,
        R.drawable.rune,
        R.drawable.rvn,
        R.drawable.sand,
        R.drawable.shib,
        R.drawable.snx,
        R.drawable.sol,
        R.drawable.srm,
        R.drawable.stx,
        R.drawable.tfuel,
        R.drawable.theta,
        R.drawable.trx,
        R.drawable.tusd,
        R.drawable.twt,
        R.drawable.uni,
        R.drawable.usdc,
        R.drawable.usdd,
        R.drawable.usdn,
        R.drawable.usdp,
        R.drawable.usdt,
        R.drawable.ustc,
        R.drawable.vet,
        R.drawable.waves,
        R.drawable.wbtc,
        R.drawable.xdc,
        R.drawable.xec,
        R.drawable.xem,
        R.drawable.xlm,
        R.drawable.xmr,
        R.drawable.xrp,
        R.drawable.xtz,
        R.drawable.xym,
        R.drawable.zec,
        R.drawable.zil,
        R.drawable.zrx
       )

    private val countries = arrayOf(
        "Choose your Crypto",
        "1INCH - 1inch Network",
        "AAVE - Aave",
        "ADA - Cardano",
        "ALGO -Algorand",
        "AMP - Amp",
        "ANKR - Ankr",
        "APE - ApeCoin",
        "AR - Arweave",
        "ATOM - Cosmos",
        "AVAX - Avalanche",
        "AXS - Axie Infinity",
        "BAT - Basic Attention Token",
        "BCH - Bitcoin Cash",
        "BNB - BNB",
        "BORA - BORA",
        "BSV - Bitcoin SV",
        "BTC - Bitcoin",
        "BTG - Bitcoin Gold",
        "BTT - BitTorrent-New",
        "BUSD - Binance USD",
        "CAKE - PancakeSwap",
        "CELO - Celo",
        "CHZ - Chiliz",
        "COMP - Compound",
        "CRO - Cronos",
        "CRV - Curve DAO Token",
        "CVX - Convex Finance",
        "DAI - Dai",
        "DASH - Dash",
        "DCR - Decred",
        "DOGE - Dogecoin",
        "DOT - Polkadot",
        "EGLD - Elrond",
        "ENJ - Enjin Coin",
        "EOS - EOS",
        "ETC - Ethereum Classic",
        "ETH - Ethereum",
        "FEI - Fei USD",
        "FIL - Filecoin",
        "FLOW - Flow",
        "FTM - Fantom",
        "FTT - FTX Token",
        "GALA - Gala",
        "GLM - Golem",
        "GLMR - Moombean",
        "GMT - STEPN",
        "GNO - Gnosis",
        "GRT - The Graph",
        "GT - GateToken",
        "HBAR - Hedera",
        "HNT - Helium",
        "HOT - Holo",
        "HT - Huobi Token",
        "ICP - Internet Computer",
        "ICX - ICON",
        "IOST - IOST",
        "IOTX - IoTeX",
        "JST - JUST",
        "KAVA - Kava",
        "KCS - KuCoin Token",
        "KDA - Kadena",
        "KLAY - Klaytn",
        "KNC - Kyber Network Crystal V2",
        "KSM - Kusama",
        "LDO - Lido DAO",
        "LEO - UNUS SED LEO",
        "LINK - Chainlink",
        "LRC - Loopring",
        "LTC - Litecoin",
        "MANA - Decentraland",
        "MATIC - Polygon",
        "MINA - Mina",
        "MIOTA - IOTA",
        "MKR - Maker",
        "NEAR - NEAR Protocol",
        "NEO - Neo",
        "NEXO - Nexo",
        "OKB - OKB",
        "OMG - OMG Network",
        "ONE - Harmony",
        "PAXG - Pax Gold",
        "QNT - Quant",
        "QTUM - Qtum",
        "ROSE - Oasis Network",
        "RUNE - THORChain",
        "RVN - Ravencoin",
        "SAND - The Sandbox",
        "SHIB - Shiba Inu",
        "SNX - Synthetix",
        "SOL - Solana",
        "SRM - Serum",
        "STX - Stacks",
        "TFUEL - Theta Fuel",
        "THETA - Theta Network",
        "TRX - TRON",
        "TUSD - TrueUSD",
        "TWT - Trust Wallet Token",
        "UNI - Uniswap",
        "USDC - USD Coin",
        "USDD - USDD",
        "USDD - USDD",
        "USDP - Pax Dollar",
        "USDT - Tether",
        "USTC - TerraClassicUSD",
        "VET - VeChain",
        "WAVES - Waves",
        "WBTC - Wrapped Bitcoin",
        "XDC - XDC Network",
        "XEC - eCash",
        "XEM - NEM",
        "XLM - Stellar",
        "XMR - Monero",
        "XRP - XRP",
        "XTZ - Tezos",
        "XYM - Symbol",
        "ZEC - Zcash",
        "ZIL - Zilliqa",
        "ZRX - Ox"
    )

    var list: ArrayList<Country>? = null
        get() {

            if (field != null)
                return field

            field = ArrayList()
            for (i in images.indices) {

                val imageId = images[i]
                val countryName = countries[i]

                val country = Country(imageId, countryName)
                field!!.add(country)
            }

            return field
        }
}

Thank's to help me ;)

  • Does this answer your question? [Unfortunately MyApp has stopped. How can I solve this?](https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this) – Ivo Aug 15 '22 at 10:56
  • Hi, thank's for the answer. The Logcat give me this answer : 2022-08-15 15:06:00.087 1638-1652/? E/memtrack: Couldn't load memtrack module 2022-08-15 15:06:00.087 1638-1652/? W/android.os.Debug: failed to get memory consumption info: -1 – Benjamin Aug 15 '22 at 13:07

0 Answers0