Help us understand the problem. What is going on with this article?

Kotlinで始めるAndroidアプリ入門(後編)

More than 1 year has passed since last update.

送信ボタン押下時のロジックを作る

中編で作成した最初の画面で、ボタンを押したときに2つ目の画面へテキストボックスの文字列を送信するロジックを作りましょう。

左のプロジェクトウィンドウから、app > java > com.example.myfirstapp > MainActivity.java を選択します。
mainActivity.png

sendMessageメソッドを追加します。このメソッドは、android:OnClickとの互換性が必要なので、次の制約があります。

  • publicアクセスであること(Kotlinではデフォルトがpublicです)
  • 戻り値がvoidであること
  • 引数がViewのみであること。

送信ボタン押下時に画面遷移させるので、Intentオブジェクトを作ります。このIntentオブジェクトにテキストボックスの文字列をセットします。

また、このメッセージを示すキーとして、定数EXTRA_MESSAGEを用意します。

MainActivityクラスは次のようになります。DisplayMessageActivityはこのあと作るクラスなので、まだエラーのままで大丈夫です。

class MainActivity : AppCompatActivity() {
    val EXTRA_MESSAGE: String = "com.example.myfirstapp.MESSAGE"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    /* Sendボタン押下時 */
    fun sendMessage(view: View) {
        val intent: Intent = Intent(this@MainActivity,
                DisplayMessageActivity::class.java)
        val editText: EditText = findViewById(R.id.editText) as EditText
        val message: String = editText.text.toString()
        intent.putExtra(EXTRA_MESSAGE, message)
        startActivity(intent)
    }
}

アクティビティにsendMessageメソッドを設定する

左のプロジェクトウィンドウから app > res > layout > activity_main.xml を選択します。

デザインタブでボタンをクリックし、右の属性ウィンドウでonClickプロパティのプルダウンからsendMessage MainActivityを選択します。

setOnClick.png

2つ目の画面を作る

左のプロジェクトウィンドウで app を右クリックし、 新規 > アクティビティ > 空のアクティビティ を選択します。

emptyActivity.png

アクティビティ名に「DisplayMessageActivity」を入力し、OKをクリックします。
displayMessageActivity.png

この新しい画面に、最初の画面でテキストボックスへ入力した文字列を表示しましょう。表示するためのテキストビューを設定します。

左のプロジェクトウィンドウで app > res > layout > activity_display_message.xml を開きます。パレットウィンドウで text > TextView をドラッグアンドドロップします。

createTextView.png

2つ目の画面にメッセージを表示する

最初の画面から受け取ったメッセージを画面に表示しましょう。

左のプロジェクトウィンドウから、app > java > com.example.myfirstapp > DisplayMessageActivity.kt を選択します。onCreckメソッドに以下を追加します。

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_display_message)

        // Activity開始時にIntentを取得し、文字列をセットする
        val intent: Intent = getIntent()
        val message: String = intent.getStringExtra(MainActivity().EXTRA_MESSAGE)
        val textView: TextView = findViewById(R.id.textView)
        textView.setText(message)
    }

Upナビゲーションを追加する

Upボタンをタップした際に、2つ目の画面から最初の画面へ戻れるようにします。AndroidManifest.xmlに親画面を設定します。

左のプロジェクトウィンドウから app > manifests > AndroidManifest.xml を選択します。
setParent.png

DisplayMessageActivity の タグに親画面の情報を記載します。

        <activity
            android:name=".DisplayMessageActivity"
            android:parentActivityName=".MainActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>

動かしてみる

さっそく動かしてみましょう。テキストボックスになにか文字列を入力してボタンを押します。2つ目の画面にその文字列が表示されれば成功です。

firstActivity.png
secondActivity.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした