Kotlinでカウントアプリを作ってみた

今日、Kotlinという言語があると大学の先生から教えて貰った。Javaが苦手だし、名前も可愛いからKotlinをメインで使うようにしようかなと思い始めている。

手始めに文法の違いなどを比較にするためにボタンを押せば数字が１増えるだけのカウントアプリを作ってみた。

```activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin"
                tools:context=".MainActivity">

    <TextView
            android:text="@string/hello_world"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true" android:id="@+id/countText"/>
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+"
            android:id="@+id/countButton" android:layout_below="@+id/countText" android:layout_centerHorizontal="true"
            android:layout_marginTop="150dp"/>

</RelativeLayout>

```
これはJavaもKotlinも共通。

メインのソースコード

これが今ままでのコード

```MainActivity.java 
package com.whispon.count2;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {
    TextView countText;
    Button btnAdd;
    int countNumber=0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        countButton = (Button) findViewById(R.id.countButton);
        countText = (TextView) findViewById(R.id.countText);

        countButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                countNumber++;
                countText.setText(String.valueOf(countNumber));
            }
        });
        }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

```

こっちがKotlin

```MainActivity.kt
package com.whispon.myapplication.app

import android.support.v7.app.ActionBarActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import android.widget.TextView


public class MainActivity : ActionBarActivity() {
    var countNumber = 0
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var countText = findViewById(R.id.countText) as TextView
        val countButton = findViewById(R.id.countButton) as Button

        countButton.setOnClickListener {
            countNumber++
            countText.setText(Integer.toString(countNumber))
        }


    }


    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        val id = item.getItemId()

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true
        }

        return super.onOptionsItemSelected(item)
    }
}

```
なんとなくだけどJavaよりKotlinの方がすっきりかけているのではないかな？
やっていることが同じならすっきりかける方が良いだろう。

これから積極的にKotlinを書いて普及させていこうかしら∧( 'Θ' )∧カサカサ（侵略〜〜♪）