어제 kotlin에 들어가서 Android 스튜디오 3.0 Canary 2, JRE 1.8.0을 사용하여 기본 계산기를 만들려고했습니다. 안타깝게도 애플리케이션을 휴대폰에 설치하면 아래 이미지와 다르게 나타납니다.
내 안드로이드 스튜디오에서 디자인은 이렇게
다음은 내 XML입니다.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="com.example.jeffrey.kotlincalculator.MainActivity">
<EditText
android:id="@+id/editText_num1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number"
android:hint="Input Number 1"
tools:layout_editor_absoluteX="40dp"
tools:layout_editor_absoluteY="27dp" />
<EditText
android:id="@+id/editText_num2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number"
android:hint="Input Number 2"
tools:layout_editor_absoluteX="40dp"
tools:layout_editor_absoluteY="92dp" />
<TextView
android:id="@+id/textview_result"
android:layout_width="345dp"
android:layout_height="39dp"
android:text="Result"
android:textAppearance="@android:style/TextAppearance"
android:textAlignment="center"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteY="159dp"
tools:layout_editor_absoluteX="20dp" />
<Button
android:id="@+id/button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="48dp"
android:text="+"
app:layout_constraintLeft_toLeftOf="parent"
tools:layout_editor_absoluteY="219dp" />
<Button
android:id="@+id/button_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
tools:layout_editor_absoluteY="291dp"
tools:layout_editor_absoluteX="48dp" />
<Button
android:id="@+id/button_multiple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*"
tools:layout_editor_absoluteX="266dp"
tools:layout_editor_absoluteY="219dp" />
<Button
android:id="@+id/button_divide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
tools:layout_editor_absoluteX="266dp"
tools:layout_editor_absoluteY="291dp" />
</android.support.constraint.ConstraintLayout>
두 번째 문제가 있지만
숫자 필드에 숫자를 입력하려고했는데 + (추가) 버튼을 클릭하면 즉시 충돌이 발생합니다.
오류는 다음과 같습니다.
FATAL EXCEPTION: main
Process: com.example.jeffrey.kotlincalculator, PID: 20432
java.lang.NumberFormatException: Invalid int: ""
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at com.example.jeffrey.kotlincalculator.MainActivity.getNum1(MainActivity.kt:42)
at com.example.jeffrey.kotlincalculator.MainActivity$onCreate$1.onClick(MainActivity.kt:24)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21177)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5438)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
INT가 오류임을 분명히 보여줍니다.
다음은 내 MainActivity 코드입니다.
package com.example.jeffrey.kotlincalculator
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val result = findViewById(R.id.textview_result) as TextView
val button_add = findViewById(R.id.button_add) as Button
val button_minus = findViewById(R.id.button_minus) as Button
val button_multiple = findViewById(R.id.button_multiple) as Button
val button_divide = findViewById(R.id.button_divide) as Button
button_add.setOnClickListener(View.OnClickListener{
view -> result.text = (getNum1() + getNum2()).toString()
})
button_minus.setOnClickListener(View.OnClickListener{
view -> result.text = (getNum1() - getNum2()).toString()
})
button_multiple.setOnClickListener(View.OnClickListener{
view -> result.text = (getNum1() * getNum2()).toString()
})
button_divide.setOnClickListener(View.OnClickListener{
view -> result.text = (getNum1() / getNum2()).toString()
})
}
fun getNum1(): Int{
val input_num1 = findViewById(R.id.editText_num1) as EditText;
return Integer.parseInt(input_num1.text.toString());
}
fun getNum2(): Int{
val input_num2 = findViewById(R.id.editText_num2) as EditText;
return Integer.parseInt(input_num2.text.toString());
}
}
전화에서 검색 한 String의 parseInt가 오류 인 것으로 밝혀졌습니다. 도와주세요:)
XML에는 tools:layout_editor_absoluteX="40dp" tools:layout_editor_absoluteY="92dp"
이러한 제약 조건이 디자이너 창에만 적용된다는 것을 의미하는 요소가 있습니다. 다음은 Constraint 레이아웃 사용 방법을 이해하는 데 도움이 될 수있는 교육입니다. https://developer.android.com/training/constraint-layout/index.html
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다