Mobile App Dev 2021W: Tutorial 5

From Soma-notes
Revision as of 22:04, 26 February 2021 by Soma (talk | contribs)

This tutorial is in development.

Code

Converter-1A.zip

java/carleton.comp1601.converter_1a/MainActivity

package carleton.comp1601.converter_1a

import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var editTemperature: EditText
    private lateinit var result: TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        result = findViewById(R.id.result)
        editTemperature = findViewById(R.id.editTemperature)
        editTemperature.addTextChangedListener(watcher)
    }
    private val watcher = object : TextWatcher {
        override fun afterTextChanged(s: Editable) {
            val Fs = editTemperature.getText().toString()
            var F = Fs.toDoubleOrNull()

            if (F == null) {
                result.setText("Please enter a number to convert.")
            } else {
                val C = (F - 32.0) * (5.0 / 9.0)
                result.setText(String.format("%s Farenheit is %.2f Celsius", Fs, C))
            }
        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
        }
    }
}

res/layout/activity_main.xml

<?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">
    <LinearLayout
        android:orientation="vertical"
        android:padding="10sp"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <EditText
            android:id="@+id/editTemperature"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:gravity="center"
            android:hint="Enter Farenheit"
            android:inputType="numberSigned" />

        <TextView
            android:id="@+id/result"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/message"
            android:textAppearance="@style/TextAppearance.AppCompat.Large" />
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>


res/values/strings.xml

<resources>
    <string name="app_name">Temperature Converter</string>
    <string name="message">Enter a number please</string>
</resources>