Android App: Kalkulator BMI

Prosty projekt Android napisany w Kotlinie z użyciem ViewBinding. Dane wprowadzasz w pierwszym oknie, BMI liczy się w drugim, a historia pojawia się w trzecim.

🧱 Struktura projektu

MainActivity.kt


class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    companion object {

        val historia = mutableListOf()

    }

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)

        setContentView(binding.root)

        binding.btnConfirm.setOnClickListener {

            val waga = binding.edWaga.text.toString().toFloatOrNull()

            val wzrost = binding.edWzrost.text.toString().toFloatOrNull()

            val wiek = binding.edWiek.text.toString().toFloatOrNull()

    val selectedId = binding.radioGroup.checkedRadioButtonId

    if (selectedId != -1) {

        val selectedRadio = findViewById(selectedId)

        val gender = selectedRadio.text.toString()

        // np. użyj gender dalej:

        binding.tvWynik.text = "Płeć: $gender"

    } else {

        Toast.makeText(this, "Wybierz płeć", Toast.LENGTH_SHORT).show()

    }
            if (waga != null && wzrost != null && wiek != null) {

                val intent = Intent(this, MainActivity2::class.java)

                intent.putExtra("waga", waga)

                intent.putExtra("wzrost", wzrost)

                intent.putExtra("wiek", wiek)

                startActivity(intent)

            } else {

                Toast.makeText(this, "Uzupełnij poprawnie wszystkie dane", Toast.LENGTH_SHORT).show()

            }

        }

        binding.btnHistoria.setOnClickListener {

            startActivity(Intent(this, MainActivity3::class.java))

        }

    }

}

    
MainActivity2.kt


class MainActivity2 : AppCompatActivity() {

    private lateinit var binding: ActivityMain2Binding

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        binding = ActivityMain2Binding.inflate(layoutInflater)

        setContentView(binding.root)

        val waga = intent.getFloatExtra("waga", 0f)

        val wzrost = intent.getFloatExtra("wzrost", 0f)

        val wiek = intent.getFloatExtra("wiek", 0f)

        val bmi = waga / ((wzrost / 100) * (wzrost / 100))

        val wynikText = "Waga: %.1f, Wzrost: %.1f, Wiek: %.0f, BMI: %.2f".format(waga, wzrost, wiek, bmi)

        MainActivity.historia.add(0, wynikText)

        binding.tvWynik.text = "Twoje BMI: %.2f".format(bmi)

        binding.btnPowrot.setOnClickListener {

            startActivity(Intent(this, MainActivity::class.java))

            finish()

        }

    }

}

    
MainActivity3.kt


class MainActivity3 : AppCompatActivity() {

    private lateinit var binding: ActivityMain3Binding

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        binding = ActivityMain3Binding.inflate(layoutInflater)

        setContentView(binding.root)

        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, MainActivity.historia)

        binding.listView.adapter = adapter

        binding.btnWroc.setOnClickListener {

            startActivity(Intent(this, MainActivity::class.java))

            finish()

        }

    }

}

    
activity_main.xml


<LinearLayout ... orientation="vertical">

    <EditText android:id="@+id/edWaga" android:hint="Waga (kg)" ... />

    <EditText android:id="@+id/edWzrost" android:hint="Wzrost (cm)" ... />

    <EditText android:id="@+id/edWiek" android:hint="Wiek (lata)" ... />

    <Button android:id="@+id/btnConfirm" android:text="Oblicz BMI" ... />

    <Button android:id="@+id/btnHistoria" android:text="Pokaż historię" ... />

</LinearLayout>

    
activity_main2.xml


<LinearLayout ... orientation="vertical">

    <TextView android:id="@+id/tvWynik" android:textSize="24sp" ... />

    <Button android:id="@+id/btnPowrot" android:text="Wróć" ... />

</LinearLayout>

    
activity_main3.xml


<LinearLayout ... orientation="vertical">

    <ListView android:id="@+id/listView" android:layout_weight="1" ... />

    <Button android:id="@+id/btnWroc" android:text="Wróć" ... />

</LinearLayout>