2. 条件分岐
res/values/strings.xml
<resources>
<string name="app_name">アプリ名</string>
<string name="tv_name">お名前を入力してください</string>
<string name="bt_click">名前の表示</string>
<string name="bt_clear">名前のクリア</string>
</resources>
res/layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main"
android:padding="8dp"
android:orientation="vertical" >
<TextView
android:text="@string/tv_name" />
<EditText
android:id="@+id/etName"
android:inputType="textPersonName" />
<Button
android:id="@+id/btClick"
android:text="@string/bt_click" />
<Button
android:id="@+id/btClear"
android:text="@string/bt_clear" />
<TextView
android:id="@+id/tvOutput"
android:text="" <--最初は何も表示しないので空文字を設定する
android:textSize="25sp" />
</LinearLayout>
kotlin+java/com.example.myapp/MainActivity.kt
import ...
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) <--Rはresフォルダを指す
val btClick = findViewById<Button>(R.id.btClick)
val listener = HelloListener()
btClick.setOnClickListener(listener)
var btClear = findViewById<BUtton>(R.id.btClear)
btClear.setOnClickListener(listener)
}
private inner class HelloListener : View.OnClickListener {
override fun onClick(view: View) {
val input = findViewById<EditText>(R.id.etName)
val output = findViewById<TextView>(R.id.tvOutput)
// idに応じて処理を分岐させる
when(view.id) {
R.id.btClick -> {
val inputStr = input.text.toString()
output.text = inputStr + "さん、こんにちは"
}
R.id.btClear -> {
input.setText("")
output.text = ""
}
}
}
}
}
override:あるクラスを継承したときに、その親クラスのメソッドを上書きすること
onCreate()メソッド:Androidアプリが起動したら最初に実行されるメソッド
【private inner class HelloListener : View.OnClickListener { の意味】
inner … HelloListenerクラスの中でクラス外のインスタンスにアクセスできるようになります。this@外部クラス名とすることで、外部クラスにアクセスできます。
View.OnClickListener … 継承です。クリックされたかどうか監視するリスナにつけられます。View.OnClickListenerをつけたら、override fun onClick(){}を書くことでクリック時のイベントを設定できます。
BACK