この記事は2020年08月10日に投稿しました。
目次
リンク
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているAndroidでダイアログを表示する方法についてです。
2. Androidでダイアログを表示する
Androidでダイアログを表示するには、以下のような実装になります。
実装例
Androidビューのapp->java-><パッケージ名>で右クリックし、ポップアップメニュー->New->Kotlin File/Classから以下のFruitsDialogFragment.ktを追加します。
FruitsDialogFragment.kt
package info.paveway.sampledialog import android.app.AlertDialog import android.app.Dialog import android.content.DialogInterface import android.os.Bundle import android.widget.Toast import androidx.fragment.app.DialogFragment class FruitsDialogFragment(fruits : String) : DialogFragment() { val fruits: String init { this.fruits = fruits } override fun onCreateDialog(savedInstanceState: Bundle?) : Dialog { // ダイアログを生成するビルダーを生成します。 val builder = AlertDialog.Builder(activity) // タイトルを設定します。 builder.setTitle("表示") // メッセージを設定します。 builder.setMessage("選択したフルーツを表示しますか?") // ポジティブボタンを設定します。 builder.setPositiveButton("はい", DialogButtonClicListener(fruits)) // ネガティブボタンを設定します。 builder.setNegativeButton("いいえ", DialogButtonClicListener(fruits)) // ナチュラルボタンを設定します。 builder.setNeutralButton("無視", DialogButtonClicListener(fruits)) // ダイアログを生成し、返却します。 val dialog = builder.create() return dialog } // ダイアログボタンにクリックリスナークラス private inner class DialogButtonClicListener(fruits : String) : DialogInterface.OnClickListener { val fruits: String init { this.fruits = fruits } // ダイアログボタンがクリックされた時に呼び出されます。 override fun onClick(dialog: DialogInterface?, which: Int) { // クリックされたボタンにより処理を振り分けます。 var msg = "" when (which) { // ポジティブボタンの場合 DialogInterface.BUTTON_POSITIVE -> msg = "選択したフルーツは${fruits}です。" // ネガティブボタンの場合 DialogInterface.BUTTON_NEGATIVE -> msg = "選択したフルーツは表示しません。" // ナチュラルボタンの場合 DialogInterface.BUTTON_NEUTRAL -> msg = "無視します。" } // クリックされたボタンによりメッセージをトースト表示します。 Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show() } } }
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:orientation="vertical"> <Button android:id="@+id/appleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="リンゴ"/> <Button android:id="@+id/bananaButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="バナナ"/> <Button android:id="@+id/orangeButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="オレンジ"/> </LinearLayout>
MainActivity.kt
package info.paveway.sampledialog import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // ボタンにリスナーを設定します。 val listener = ButtonOnClickListener() val appleButton = findViewById<Button>(R.id.appleButton) appleButton.setOnClickListener(listener) val bananaButton = findViewById<Button>(R.id.bananaButton) bananaButton.setOnClickListener(listener) var orangeButton = findViewById<Button>(R.id.orangeButton) orangeButton.setOnClickListener(listener) } // ボタンのクリックリスナークラス private inner class ButtonOnClickListener : View.OnClickListener { // ボタンがクリックされた時に呼び出されます。 override fun onClick(view: View) { // ダイアログを表示します。 var button = view as Button var frutis = button.text.toString() val dialogFragment = FruitsDialogFragment(frutis) dialogFragment.show(supportFragmentManager, "FruitsDialogFragment") } } }
実行結果
3. おわりに
いろいろなアプリでダイアログはよく使用すると思います。
リンク
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS [Bi-OS][Bi-OS]は高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688