package パッケージ名import android.content.Intentimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.view.Viewimport kotlinx.android.synthetic.main.activity_main.*class MainActivity : AppCompatActivity() { companion object { const val EXTRA_PRICE = "price" const val EXTRA_DISCOUNT = "discount" } private val calcListener = View.OnClickListener { // ### 入力チェック ### var isValid = true // チェック状態を格納する // EditText から入力値を取り出し String に変換する val priceText = edtPrice.text.toString() val discountText = edtDiscount.text.toString() if (priceText.isEmpty()) { edtPrice.error = getString(R.string.price_error) // エラーメッセージを登録 isValid = false } if (discountText.isEmpty()) { edtDiscount.error = getString(R.string.discount_error) isValid = false } // ### 画面遷移 ### if (isValid) { val price = Integer.parseInt(priceText) val discount = Integer.parseInt(discountText) // インテントを準備 引数1: 遷移元, 引数2: 遷移先アクティビティ(クラス) val intent = Intent(this, ResultActivity::class.java).apply { putExtra(EXTRA_PRICE, price) // インテントに渡したいデータを詰め込む putExtra(EXTRA_DISCOUNT, discount) // 引数1: 識別子, 引数2: 渡したいデータ } // 遷移先アクティビティを実行する startActivity(intent) } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) btnCalculate.setOnClickListener(calcListener) }}package パッケージ名import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport kotlinx.android.synthetic.main.activity_result.*class ResultActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_result) // intent プロパティで インテント を取得 // extras プロパティで エクストラ を取得 // getIntExtra() で Int 型のエクストラを取得 // 引数1: 識別子, 引数2: デフォルト値(中身がなかったとき用) val price = intent.getIntExtra(MainActivity.EXTRA_PRICE, 0) val discount = intent.getIntExtra(MainActivity.EXTRA_DISCOUNT, 0)// val price: Int// val discount: Int// intent.run {// price = getIntExtra("price", 0)// discount = getIntExtra("discount", 0)// } // 割引後の価格計算 val discountedPrice = price * (100 - discount) / 100 txtExpression.text = getString(R.string.expression_label, price, discount) txtResult.text = getString(R.string.result_label, discountedPrice) }}<?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"> <TextView android:id="@+id/textView" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="48dp" android:labelFor="@id/edtPrice" android:text="@string/price_label" android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintEnd_toEndOf="@+id/textView2" app:layout_constraintStart_toStartOf="@+id/textView2" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/edtPrice" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="32dp" android:layout_marginEnd="48dp" android:ems="10" android:importantForAutofill="no" android:inputType="number" app:layout_constraintBaseline_toBaselineOf="@+id/textView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.461" app:layout_constraintStart_toEndOf="@+id/textView" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="48dp" android:layout_marginTop="32dp" android:labelFor="@id/edtDiscount" android:text="@string/discount_label" android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" /> <EditText android:id="@+id/edtDiscount" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="32dp" android:layout_marginEnd="48dp" android:ems="10" android:importantForAutofill="no" android:inputType="number" app:layout_constraintBaseline_toBaselineOf="@+id/textView2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/textView2" /> <Button android:id="@+id/btnCalculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="48dp" android:layout_marginEnd="48dp" android:text="@string/calculate_button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/edtDiscount" /></androidx.constraintlayout.widget.ConstraintLayout><?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"> <TextView android:id="@+id/textView" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="48dp" android:layout_marginEnd="8dp" android:labelFor="@id/edtPrice" android:text="@string/price_label" android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintEnd_toStartOf="@+id/guideline" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="@+id/textView2" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/edtPrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginEnd="48dp" android:ems="10" android:inputType="number" app:layout_constraintBaseline_toBaselineOf="@+id/textView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="@+id/guideline" android:importantForAutofill="no" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="48dp" android:layout_marginTop="32dp" android:layout_marginEnd="8dp" android:labelFor="@id/edtDiscount" android:text="@string/discount_label" android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintEnd_toStartOf="@+id/guideline" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" /> <EditText android:id="@+id/edtDiscount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginEnd="48dp" android:ems="10" android:inputType="number" app:layout_constraintBaseline_toBaselineOf="@+id/textView2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="@+id/guideline" android:importantForAutofill="no" /> <Button android:id="@+id/btnCalculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="48dp" android:layout_marginEnd="48dp" android:text="@string/calculate_button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/edtDiscount" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.35" /></androidx.constraintlayout.widget.ConstraintLayout><?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=".ResultActivity"> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent=".5" /> <TextView android:id="@+id/txtExpression" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="24dp" android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintBottom_toTopOf="@+id/guideline3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:text="@string/expression_label" /> <TextView android:id="@+id/txtResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="24dp" android:layout_marginEnd="8dp" android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline3" tools:text="@string/result_label" /></androidx.constraintlayout.widget.ConstraintLayout><resources> <string name="app_name">割引計算機</string> <string name="price_label">定価</string> <string name="discount_label">割引率</string> <string name="calculate_button">計算する</string> <string name="price_error">定価を入力してください</string> <string name="discount_error">割引率を入力してください</string> <string name="expression_label">%1$,3d円の%2$d%%引きは</string> <string name="result_label">%1$,3d円です</string></resources><?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">s200_Discount Calc</string> <string name="calculate_button">calculate</string> <string name="discount_error">input discount rate</string> <string name="discount_label">discount</string> <string name="expression_label">%2$d%% off of $%1$,3d is</string> <string name="price_error">input price</string> <string name="price_label">price</string> <string name="result_label">$%1$,3d</string></resources>