前提・実現したいこと
kotlin初心者です。
電卓アプリのサンプルを使ってみようとしてコピペプログラミングをしたら、下記の様なエラーが発生してしまいました。google等で検索してみましたが、参考となるものがなかったため、質問させていただいています。
発生している問題・エラーメッセージ
Caused by: java.lang.NoClassDefFoundError: kotlin/reflect/full/KClasses
該当のソースコード
kotlin
1package com.example.calculator 2 3import androidx.appcompat.app.AppCompatActivity 4import android.os.Bundle 5import android.widget.Button 6import android.widget.TextView 7 8class MainActivity : AppCompatActivity() { 9 override fun onCreate(savedInstanceState: Bundle?) { 10 super.onCreate(savedInstanceState) 11 setContentView(R.layout.activity_main) 12 var value : Int = 0 13 var clear : Boolean = false 14 var calc = false 15 var operator : String? = null 16 val buttonZero : Button = findViewById(R.id.zero) 17 val buttonOne : Button = findViewById(R.id.one) 18 val buttonTwo : Button = findViewById(R.id.two) 19 val buttonThree : Button = findViewById(R.id.three) 20 val buttonFour : Button = findViewById(R.id.four) 21 val buttonFive : Button = findViewById(R.id.five) 22 val buttonSix : Button = findViewById(R.id.six) 23 val buttonSeven : Button = findViewById(R.id.seven) 24 val buttonEight : Button = findViewById(R.id.eight) 25 val buttonNine : Button = findViewById(R.id.nine) 26 val buttonAdd : Button = findViewById(R.id.add) 27 val buttonMul : Button = findViewById(R.id.mul) 28 val buttonSub : Button = findViewById(R.id.sub) 29 val buttonDiv :Button = findViewById(R.id.div) 30 val buttonEqual:Button = findViewById(R.id.equal) 31 val buttonClear : Button = findViewById(R.id.clear) 32 val textArea : TextView = findViewById(R.id.display) 33 fun numButtonAction(num : String) { 34 textArea.text = if(textArea.text.toString() != "0" && clear == false){ 35 textArea.text.toString() + num 36 } else { 37 clear = false 38 num 39 } 40 calc = true 41 } 42 /* 計算の実処理を行う関数 */ 43 fun calculation(op : String?) :Int { 44 if (op == "+") { 45 return value + textArea.text.toString().toInt() 46 } else if (op == "-") { 47 return value - textArea.text.toString().toInt() 48 } else if (op == "*") { 49 return value * textArea.text.toString().toInt() 50 } else if (op == "/") { 51 return value / textArea.text.toString().toInt() 52 } else { 53 return textArea.text.toString().toInt() 54 } 55 } 56 57 /* 計算ボタンを押された時の処理をまとめた関数 */ 58 fun calcButtonAction(op : String?) { 59 /* 計算処理有効の場合のみ計算と表示の更新を行う */ 60 if (calc) { 61 value = calculation(operator) 62 clear = true 63 calc = false 64 textArea.text = value.toString() 65 } 66 /* 演算子は計算処理無効でも更新 */ 67 operator = op 68 } 69 70 buttonClear.setOnClickListener { 71 textArea.text ="0" 72 value = 0 73 operator = null 74 clear = false 75 calc = false 76 } 77 78 /* 数字ボタンを押された時の処理 */ 79 /* 表示領域を更新 */ 80 buttonZero.setOnClickListener { numButtonAction("0") } 81 buttonOne.setOnClickListener { numButtonAction("1") } 82 buttonTwo.setOnClickListener { numButtonAction("2") } 83 buttonThree.setOnClickListener { numButtonAction("3") } 84 buttonFour.setOnClickListener { numButtonAction("4") } 85 buttonFive.setOnClickListener { numButtonAction("5") } 86 buttonSix.setOnClickListener { numButtonAction("6") } 87 buttonSeven.setOnClickListener { numButtonAction("7") } 88 buttonEight.setOnClickListener { numButtonAction("8") } 89 buttonNine.setOnClickListener { numButtonAction("9") } 90 91 92 /* 計算ボタンが押された時の処理 */ 93 buttonAdd.setOnClickListener { calcButtonAction("+") } 94 buttonMul.setOnClickListener { calcButtonAction("*") } 95 buttonSub.setOnClickListener { calcButtonAction("-") } 96 buttonDiv.setOnClickListener { calcButtonAction("/") } 97 98 /* "="ボタンが押された時の処理 */ 99 buttonEqual.setOnClickListener { 100 /* 計算処理有効の場合のみ計算と表示の更新を行う */ 101 if (calc) { 102 value = calculation(operator) 103 calc = false 104 clear = true 105 textArea.text = value.toString() 106 operator = null 107 } 108 } 109 } 110}
あなたの回答
tips
プレビュー