AndroidFacadeAPI

ダイアログ

このエントリーをはてなブックマークに追加
最終更新日 2016-12-31

アラート

次に示すのは、アラートダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreateAlert("SL4A", "Hello, SL4A")
droid.dialogSetPositiveButtonText("Yes")
droid.dialogSetNegativeButtonText("No")
droid.dialogSetNeutralButtonText("Cancel")
droid.dialogShow()
response = droid.dialogGetResponse()
droid.makeToast(response.result["which"])
droid.dialogDismiss()

アラートダイアログを作成するためには dialogCreateAlert() を呼び出します。 dialogCreateAlert() の引数は順に、ダイアログのタイトル、ダイアログに表示するメッセージ文字列で、すべて省略可能です。

アラートダイアログにボタンを追加するためには、dialogSetPositiveButtonText()、 dialogSetNegativeButtonText()、dialogSetNeutralButtonText() を呼び出します。 これらはすべて呼び出さなければならないわけではなく、必要なボタンだけを追加したり、 まったくボタンを追加しないアラートダイアログを作成することもできます。 なお、各 API の第1引数はボタンに表示する文字列です。

作成したダイアログを表示するためには dialogShow() を呼び出します。 また、dialogGetResponse() を呼び出すと、ダイアログがどのボタンを押して閉じられたかがわかります。 ボタンと dialogGetResponse() から返される "which" の値の対応表を以下に示します。

ボタン "which" の値
dialogSetPositiveButtonText() で作成したボタン positive
dialogSetNegativeButtonText() で作成したボタン negative
dialogSetNeutralButtonText() で作成したボタン neutral

dialogShow() を呼び出して表示したダイアログは、最後に dialogDismiss() を呼び出して解放します。

入力

次に示すのは、入力ダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreateInput("SL4A", "Hello, SL4A")
droid.dialogSetPositiveButtonText("Ok")
droid.dialogSetNegativeButtonText("Cancel")
droid.dialogShow()
response = droid.dialogGetResponse()
if response.result["which"] == "positive":
    droid.makeToast(response.result["value"])
droid.dialogDismiss()

入力ダイアログを作成するためには dialogCreateInput() を呼び出します。 dialogCreateInput() の引数は順に、ダイアログのタイトル、ダイアログに表示するメッセージ文字列、 入力ボックスにデフォルト表示する文字列で、すべて省略可能です。

入力された文字列は、ダイアログを閉じた後に dialogGetResponse() から返される "value" の値として取得できます。 今回の例では[Ok]ボタンを押してダイアログを閉じた場合に、入力された文字列をトーストで表示します。

なお、入力ダイアログを表示するために dialogGetInput() を使用することもできます。

import android
droid = android.Android()
droid.dialogGetInput("SL4A", "Hello, SL4A")
response = droid.dialogGetResponse()
if response.result["which"] == "positive":
    droid.makeToast(response.result["value"])

パスワード

次に示すのは、パスワードダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreatePassword("SL4A", "Hello, SL4A")
droid.dialogSetPositiveButtonText("Ok")
droid.dialogSetNegativeButtonText("Cancel")
droid.dialogShow()
response = droid.dialogGetResponse()
if response.result["which"] == "positive":
    droid.makeToast(response.result["value"])
droid.dialogDismiss()

パスワードダイアログを作成するためには dialogCreatePassword() を呼び出します。 dialogCreatePassword() の引数は順に、ダイアログのタイトル、ダイアログに表示するメッセージ文字列で、すべて省略可能です。

入力された文字列は、ダイアログを閉じた後に dialogGetResponse() から返される "value" の値として取得できます。 今回の例では[Ok]ボタンを押してダイアログを閉じた場合に、入力された文字列をトーストで表示します。

なお、パスワードダイアログを表示するために dialogGetPassword() を使用することもできます。

import android
droid = android.Android()
droid.dialogGetPassword("SL4A", "Hello, SL4A")
response = droid.dialogGetResponse()
if response.result["which"] == "positive":
    droid.makeToast(response.result["value"])

日付ピッカー

次に示すのは、日付ピッカーダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreateDatePicker(2011, 1, 1)
droid.dialogShow()
response = droid.dialogGetResponse()
if response.result["which"] == "positive":
    tmp = "%d-%02d-%02d" % (response.result["year"], response.result["month"], response.result["day"])
    droid.makeToast(tmp)
droid.dialogDismiss()

日付ピッカーダイアログを作成するためには dialogCreateDatePicker() を呼び出します。 dialogCreateDatePicker() の引数は順に、デフォルト表示する年、月、日の数値で、すべて省略可能です。

入力された日付は、ダイアログを閉じた後に dialogGetResponse() から返される "year"、"month"、"day" の値として取得できます。 今回の例では[設定]ボタンを押してダイアログを閉じた場合に、入力された日付をトーストで表示します。

時間ピッカー

次に示すのは、時間ピッカーダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreateTimePicker(10, 30)
droid.dialogShow()
response = droid.dialogGetResponse()
if response.result["which"] == "positive":
    tmp = "%02d:%02d" % (response.result["hour"], response.result["minute"])
    droid.makeToast(tmp)
droid.dialogDismiss()

時間ピッカーダイアログを作成するためには dialogCreateTimePicker() を呼び出します。 dialogCreateTimePicker() の引数は順に、デフォルト表示する時、分、24時間表記するかどうかのフラグで、すべて省略可能です。

入力された時間は、ダイアログを閉じた後に dialogGetResponse() から返される "hour"、"minute" の値として取得できます。 今回の例では[設定]ボタンを押してダイアログを閉じた場合に、入力された時間をトーストで表示します。

シークバー

次に示すのは、シークバーダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreateSeekBar(50, 100, "SL4A", "Hello, SL4A")
droid.dialogSetPositiveButtonText("Ok")
droid.dialogSetNegativeButtonText("Cancel")
droid.dialogShow()
response = droid.dialogGetResponse()
if response.result["which"] == "positive":
    droid.makeToast(str(response.result["progress"]))
droid.dialogDismiss()

シークバーダイアログを作成するためには dialogCreateSeekBar() を呼び出します。 dialogCreateSeekBar() の引数は順に、シークバーの開始値、シークバーの最大値、 ダイアログのタイトル、ダイアログに表示するメッセージ文字列で、第1引数と第2引数は省略可能です。

選択された位置は、ダイアログを閉じた後に dialogGetResponse() から返される "progress" の値として取得できます。 今回の例では[Ok]ボタンを押してダイアログを閉じた場合に、選択された位置をトーストで表示します。

水平プログレス

次に示すのは、水平プログレスダイアログを表示する例です。

import android
import time
droid = android.Android()
droid.dialogCreateHorizontalProgress("SL4A", "Hello, SL4A", 100)
droid.dialogShow()
for i in [10, 20, 50, 80, 100]:
    droid.dialogSetCurrentProgress(i)
    time.sleep(1)
droid.dialogDismiss()

水平プログレスダイアログを作成するためには dialogCreateHorizontalProgress() を呼び出します。 dialogCreateHorizontalProgress() の引数は順に、ダイアログのタイトル、ダイアログに表示するメッセージ文字列、 プログレスの最大値で、すべて省略可能です。

現在のプログレス位置は、dialogSetCurrentProgress() を呼び出して設定します。 今回の例では 1 秒ごとにプログレスを進めます。

なお、dialogSetMaxProgress() を呼び出すと、ダイアログを作成した後にプログレスの最大値を設定することができます。

import android
import time
droid = android.Android()
droid.dialogCreateHorizontalProgress("SL4A", "Hello, SL4A")
droid.dialogShow()
droid.dialogSetMaxProgress(80)
for i in [10, 20, 50, 80]:
    droid.dialogSetCurrentProgress(i)
    time.sleep(1)
droid.dialogDismiss()

回転プログレス

次に示すのは、回転プログレスダイアログを表示する例です。

import android
import time
droid = android.Android()
droid.dialogCreateSpinnerProgress("SL4A", "Hello, SL4A")
droid.dialogShow()
time.sleep(10)
droid.dialogDismiss()

回転プログレスダイアログを作成するためには dialogCreateSpinnerProgress() を呼び出します。 dialogCreateSpinnerProgress() の引数は順に、ダイアログのタイトル、ダイアログに表示するメッセージ文字列、 プログレスの最大値で、すべて省略可能です。

今回の例では回転プログレスダイアログを 10 秒間表示します。

リスト

次に示すのは、リストダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreateAlert("SL4A")
items = ["Cupcake", "Donut", "Eclair", "Froyo", "Gingerbread"]
droid.dialogSetItems(items)
droid.dialogShow()
response = droid.dialogGetResponse()
droid.makeToast(items[response.result["item"]])
droid.dialogDismiss()

リストダイアログを作成するためには、dialogCreateAlert() を呼び出してアラートダイアログを作成した後に dialogSetItems() を呼び出します。 dialogSetItems() の引数はリストダイアログに表示する項目の配列です。

選択された項目のインデックスは、ダイアログを閉じた後に dialogGetResponse() から返される "item" の値として取得できます。 今回の例では項目を選択してダイアログを閉じた後に、選択された項目をトーストで表示します。

単一選択リスト

次に示すのは、単一選択リストダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreateAlert("SL4A")
items = ["Cupcake", "Donut", "Eclair", "Froyo", "Gingerbread"]
droid.dialogSetSingleChoiceItems(items)
droid.dialogSetPositiveButtonText("Ok")
droid.dialogSetNegativeButtonText("Cancel")
droid.dialogShow()
response = droid.dialogGetResponse()
if response.result["which"] == "positive":
    selected = droid.dialogGetSelectedItems()
    droid.makeToast(items[selected.result[0]])
droid.dialogDismiss()

単一選択リストダイアログを作成するためには、dialogCreateAlert() を呼び出してアラートダイアログを作成した後に dialogSetSingleChoiceItems() を呼び出します。 dialogSetSingleChoiceItems() の引数は順に、単一選択リストダイアログに表示する項目の配列、 デフォルトで選択する項目のインデックスで、第2引数は省略可能です。

選択された項目のインデックスは、ダイアログを閉じた後に dialogGetSelectedItems() を呼び出すと配列として取得できます。 今回の例では[Ok]ボタンを押してダイアログを閉じた場合に、選択された項目をトーストで表示します。

複数選択リスト

次に示すのは、複数選択リストダイアログを表示する例です。

import android
droid = android.Android()
droid.dialogCreateAlert("SL4A")
items = ["Cupcake", "Donut", "Eclair", "Froyo", "Gingerbread"]
droid.dialogSetMultiChoiceItems(items, [1, 3])
droid.dialogSetPositiveButtonText("Ok")
droid.dialogSetNegativeButtonText("Cancel")
droid.dialogShow()
response = droid.dialogGetResponse()
tmp = []
if response.result["which"] == "positive":
    selected = droid.dialogGetSelectedItems()
    for i in selected.result:
        tmp.append(items[i])
if len(tmp) != 0:
    droid.makeToast("\n".join(tmp))
droid.dialogDismiss()

複数選択リストダイアログを作成するためには、dialogCreateAlert() を呼び出してアラートダイアログを作成した後に dialogSetMultiChoiceItems() を呼び出します。 dialogSetMultiChoiceItems() の引数は順に、単一選択リストダイアログに表示する項目の配列、 デフォルトで選択する項目のインデックスの配列で、第2引数は省略可能です。

選択された項目のインデックスは、ダイアログを閉じた後に dialogGetSelectedItems() を呼び出すと配列として取得できます。 今回の例では[Ok]ボタンを押してダイアログを閉じた場合に、選択された項目をトーストで表示します。

dialog イベント

ダイアログを閉じると "dialog" イベントが発生します。 次に示すのは、入力ダイアログに対して "dialog" イベントを利用する例です。

import android
droid = android.Android()
droid.dialogCreateInput("SL4A", "Hello, SL4A")
droid.dialogSetPositiveButtonText("Ok")
droid.dialogSetNegativeButtonText("Cancel")
droid.dialogShow()
event = droid.eventWaitFor("dialog")
if event.result["data"]["which"] == "positive":
    droid.makeToast(event.result["data"]["value"])
droid.dialogDismiss()

dialogShow() でダイアログを表示した後に eventWaitFor() を呼び出し、 ダイアログを閉じて "dialog" イベントが発生するまで待機します。