※この記事は2021年7月2日に更新しました。
「テキストで表示じゃなくて、一瞬だけコメントを表示させられないかな?」
そんな要望に応えてくれるのが『トースト』です。
百聞は一見に如かず。まずはこの動画をみてください。
このように、ボタンを押すと画面下にボワっとメッセージが表示されます。
このメッセージを『トースト』と呼びます。
本記事ではこのトーストの使い方を解説していきます。
前提として、本記事はAndroid Studio 4.2.1を対象に記載します。
本記事の使用言語はJavaとなります。
今回はProgate のJavaのレッスンがすべて理解できている、
という前提の上進めていきます。
では早速参りましょう!
前回記事はこちら
トーストの使い方解説
トーストの使い方について解説していきます。
実は、トーストを表示する命令文は1行で済んでしまいます。
その1行がこちらです。
Toast.makeText(context, text, duration).show()
この命令文を解説していきます。
引数1つ目はコンテキストです。
『コンテキスト』とは、表示させる画面のオブジェクトのことです。
通常、『アクティビティ.this』だったり、『getApplicationContext()』を記載します。
※アクティビティ=画面です。.thisでオブジェクト化しています。
引数2つ目はテキストで、トーストで表示させたいテキストを記載します。
引数3つ目のdurationはトーストが表示される長さのことです。
- Toast.LENGTH_LONG ・・・(長い)
- Toast.LENGTH_SHORT ・・・(短い)
のどちらかの定数で指示されます。
以上がトーストの使い方です。
1 文で表示できるので、とても簡単ですよね!
実際にプログラムを書いてみる
ブログの初めに紹介したプログラムを作ってみましょう。
今回のプログラムは以下の流れで作成していきます。
- 文字列リソースファイル、レイアウトファイルを作成する
- リスナクラスを定義しボタンが押されたときの動作を定義する
(トーストの設定) - アプリ立ち上げ時に、ボタンにリスナクラスのインスタンスを設定する
今回のアプリはGitHubに公開しています。
下記URLの『SampleToast2』です。
是非参考にしてください。
文字列リソースファイル、レイアウトファイルを作成する
文字列リソースファイル string.xmlは以下のように記載してください。
<resources>
<string name="app_name">SampleToast</string>
<string name="textView">ボタンを押してください</string>
<string name="button_good_morning">おはよう</string>
<string name="toast_good_morning">Good Morning</string>
<string name="button_hello">こんにちは</string>
<string name="toast_hello">Hello</string>
<string name="button_good_night">おやすみ</string>
<string name="toast_good_night">Good Night</string>
</resources>
string.xml
次にレイアウトファイル、activity.xmlは以下のように記載してください。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/textView"
android:textSize="34sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btHello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="@string/button_hello"
app:layout_constraintEnd_toStartOf="@+id/btGoodNight"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btGoodMorning"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btGoodMorning"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="@string/button_good_morning"
app:layout_constraintEnd_toStartOf="@+id/btHello"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btGoodNight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="@string/button_good_night"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btHello"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_main.xml
リスナクラスを定義し、ボタンが押されたときの動作を定義する(トーストの設定)
次に、ボタンが押されたときの動作をMainActivity.javaに記載していきます。
onClickメソッドの下に以下の文を記載してください。
//ボタンクリックを見張るリスナクラスを定義
private class ToastButtonClickListener implements View.OnClickListener{
//onClickメソッドのオーバーライド。ここにボタンをされたときの動作を定義
@Override
public void onClick(View view){
//ボタンのIDを取得 (ボタンはViewクラスの子クラス)
int id = view.getId();
//ボタンのIDで条件分岐
switch(id){
//おはようボタンの場合
case R.id.btGoodMorning:
//トーストの命令、第2引数でトースト文を指示
Toast.makeText(MainActivity.this,R.string.toast_good_morning,Toast.LENGTH_LONG).show();
break;
case R.id.btHello:
//トーストの命令、第2引数でトースト文を指示
Toast.makeText(MainActivity.this,R.string.toast_hello,Toast.LENGTH_LONG).show();
break;
case R.id.btGoodNight:
//トーストの命令、第2引数でトースト文を指示
Toast.makeText(MainActivity.this,R.string.toast_good_night,Toast.LENGTH_LONG).show();
break;
}
}
}
MainActivity.java
3つのボタンがあるので、ボタンのIDとswitch文にて3つのボタンの動作をコントロールしています。
この方法に関しては、下の記事にて詳しく解説しています。
switch文の各ケースの中にトーストの文が入っています。
第1引数はコンテキストなので、MainActivity.thisと記載しています。
第2引数は表示させたいテキストです。
IDを使ってstring.xmlの内容を参照させています。
第3引数の表示させたい長さは、『Toast.LENGTH_LONG』、長いとしています。
以上がボタンを押したときの動作です。
アプリ立ち上げ時に、ボタンにリスナクラスのインスタンスを設定する
最後に、ボタンにリスナクラスのインスタンスを設定する分を記載して、
プログラムを完成させましょう!
完成したMainActivity.javaのコードは次のようになります。
package com.zerokaraapp.sampletoast;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//画面が作成されたときの指示を記載
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//レイアウトからボタンの取得
Button btGoodMorning = findViewById(R.id.btGoodMorning);
Button btHello = findViewById(R.id.btHello);
Button btGoodNight = findViewById(R.id.btGoodNight);
//ボタンに設定するためのリスナのインスタンスを取得
ToastButtonClickListener listener = new ToastButtonClickListener();
//ボタンにリスナを設定
btGoodMorning.setOnClickListener(listener);
btHello.setOnClickListener(listener);
btGoodNight.setOnClickListener(listener);
}
//ボタンクリックを見張るリスナクラスを定義
private class ToastButtonClickListener implements View.OnClickListener{
//onClickメソッドのオーバーライド。ここにボタンをされたときの動作を定義
@Override
public void onClick(View view){
//ボタンのIDを取得 (ボタンはViewクラスの子クラス)
int id = view.getId();
//ボタンのIDで条件分岐
switch(id){
//おはようボタンの場合
case R.id.btGoodMorning:
//トーストの命令、第2引数でトースト文を指示
Toast.makeText(MainActivity.this,R.string.toast_good_morning,Toast.LENGTH_LONG).show();
break;
case R.id.btHello:
//トーストの命令、第2引数でトースト文を指示
Toast.makeText(MainActivity.this,R.string.toast_hello,Toast.LENGTH_LONG).show();
break;
case R.id.btGoodNight:
//トーストの命令、第2引数でトースト文を指示
Toast.makeText(MainActivity.this,R.string.toast_good_night,Toast.LENGTH_LONG).show();
break;
}
}
}
}
MainActivity.java
※1行目packageの部分は人によって異なります。
コピペする場合は2行目以降をコピペしてください。
ここまでできたらアプリの実行をしてみましょう。
本記事一番上の動画のようにボタンを押して文字が表示されれば成功です。
まとめ
今回はアプリで文字を一瞬だけ表示させる、トーストの使い方を解説しました。
命令文が1文で済むのはとても楽ですよね。
トーストを使った自作のプログラムを作って練習してみてください。
本記事がプログラミング初心者の方の助けになれば幸いです。
次の解説記事はこちら
コメント