PR

Kotlin のトースト機能についてまとめたので紹介します【Androidアプリ開発】

Androidアプリ

初めての kotlin 何からやればいい?

こうした悩みを解決します。

姫野秀徳

組み込みエンジニアとしてメーカー勤務10年。
第二種電工事士、基本情報技術者、Code.org認定教師。
microbitを用いた電子工作&プログラミング教室を開校。
組み込み開発の実際を発信するyoutube活動も行う。

無料で学べる組み込み開発オンラインスクールはじめました!
https://kumicla.tatepro.com

姫野秀徳をフォローする

トーストとは

トーストは、アプリ画面上に表示するポップアップのことです。 

ユーザーが行なった操作に関する簡単なフィードバックとして使うことが多いです。

公式サイトはこちらを参照。

トーストの概要  |  Android デベロッパー  |  Android Developers

使い方

トーストを使うにはトースト Widget をインポート(1行目)して、トーストの関数を記述(8行目)します。

import android.widget.Toast

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

        Toast.makeText(applicationContext, "toast example", Toast.LENGTH_LONG).show()
    }
}

3つの引数をとるmaketextメソッドを使うことで表示できます。

1つ目の引数:context

contextとは、抽象クラスであり、ActivityContextやApplicationContextのスーパークラスになります。

ActivityContextやApplicationContextの元になるのがContextということですね。

Activity / Application

ApplicationContextは基本的にアプリが死ぬまでnullにはなりませんが、ActivityContextはActivityがライフサイクルで死んだ後はnullになります。

だからと言って、常にApplicationContextの方を参照してしまうと意図しないテーマがView(標準ダイアログなど)に割り当てられたり、メモリリークの原因となります。

そのため、ライフサイクルに逆らわず、ActivityContextを使った方が無難です。

スーパークラス(基底クラス)

スーパークラスとは、あるクラスの仕様を継承して新しいクラスを作成する際に、元となるクラスのことです。

今回の話でいえば、ActivityやApplicationはcontextから見るとサブクラスということになります。

サブクラス(派生クラス)

サブクラスはスーパークラスのプロパティやメソッドを引き継ぎ、スーパークラスに無い独自の部分だけを新たに定義・実装して作ったものです。

スーパークラスがopenしていないと継承できないので注意!

//スーパークラス。openを付けないと継承できない
open class Nagano{
~~
}
 
//Naganoを継承したTateshinaクラス。「:」でスーパークラスを指定する
class Tateshina: Nagano(){
~~
}

オーバーライド

オーバーライドとは、スーパークラスで定義されたメソッドを、そのクラスを継承したサブクラスで独自に定義しなおして上書きすることです。

「override」キーワードで、オーバーライドすることを明示的に宣言が必要

//基底クラス
open class Person(val name: String, val phone: String = ""){
  //「open」キーワードでオーバーライド可能に
  open fun print(){
    println("名前,電話番号: ${name}, ${phone}")
  }
}
 
//継承クラス
class Person2(name: String, phone: String = "", val sex: Int) : Person(name, phone){
  //メソッドのオーバーライド(性別を追加)
  override fun print(){
    println("お名前: ${firstName} ${lastName}, 年齢: $age")
  }
}

抽象クラス

抽象クラスとは、抽象メソッドを1つ以上持つクラスです。実体(インスタンス)を持たないです。

メンバのオーバーライドをサブクラスに強制する仕組みです。

メソッドやプロパティにabstructをつけることで抽象メンバとなります。

abstructがついている抽象メンバはオーバーライド必須なのでopenキーワードは不要です。

複数人で開発するときに抽象クラスを共有することで、実装ルールを作れるのが利点。

//抽象メソッドを1つだけ持つ抽象クラス
abstract class Shop(val name: String){
    //抽象プロパティ
    abstract var employee: Int

    //抽象メソッド
    abstract fun sell(item: String): String
}

//インスタンス生成
class Tatepro(name: String): Shop(name){
    override var employee = 0
    override fun sell(item: String): String = "${item}を売ります"
}

インスタンス

インスタンスはクラスの実体です。

上で抽象クラスを書きましたが、抽象クラス自体は実体を持てません。

抽象クラスを継承したサブクラスを実体化させる必要があります。

この内容が良いと思ったら、いいね💖を押して教えてください!

組みクラ – 組み込み開発を学び、未来を創るエンジニアへ
無料で学べる!組み込み開発の基礎から応用までをマスターできるオンラインスクール「組みクラ」

組み込みエンジニアは、あらゆる産業の基盤を支える重要な職業です。
私たちタテプロは、次世代の組み込みエンジニアを育成し、業界の競争力を高めるために活動しています。
あなたも、無料で学べる「組みクラ」で、組み込み開発のスキルをしっかり身につけ、キャリアを加速させましょう!
今すぐ学び始めて、将来の自分をステップアップさせる第一歩を踏み出しませんか?

\立プロとLINEで友だちになりませんか/
立プロと友だちになる
Androidアプリ
シェアしていただけると嬉しいです!
タイトルとURLをコピーしました