Android には、ユーザーが日時を選択するためのコントロールが用意されている ダイアログが表示されます。これらの選択ツールを使用して、 時間の一部(時、分、AM/PM)または日付(月、日、年)
<ph type="x-smartling-placeholder">で確認できます。 <ph type="x-smartling-placeholder">これらの選択ツールを使用すると、有効かつ正しい形式で、ユーザーの言語 / 地域に合わせた時刻または日付を選択できます。
まず
DialogFragment
日付の選択ツールをホストしますDialogFragment
は
選択でき、さまざまなレイアウトで選択ツールを表示できます。
基本ダイアログ内で直接使用したり、画面の埋め込みパーツとして
大きな画面でもレイアウトを統一できます
時間選択ツールを作成する
メッセージを表示するには、
TimePickerDialog
DialogFragment
を使って、この変数を拡張するフラグメント クラスを
DialogFragment
を返し、TimePickerDialog
を
フラグメントの
onCreateDialog()
メソッドを呼び出します。
時間選択ツールの DialogFragment を拡張する
TimePickerDialog
の DialogFragment
を定義する手順は次のとおりです。
次の操作を行います。
- インスタンスを返す
onCreateDialog()
メソッドを定義するTimePickerDialog
。 - 実装
TimePickerDialog.OnTimeSetListener
ユーザーが時刻を設定した場合にコールバックを受け取るためのインターフェースです。
次の例をご覧ください。
Kotlin
class TimePickerFragment : DialogFragment(), TimePickerDialog.OnTimeSetListener { override fun onCreateDialog(savedInstanceState: Bundle): Dialog { // Use the current time as the default values for the picker. val c = Calendar.getInstance() val hour = c.get(Calendar.HOUR_OF_DAY) val minute = c.get(Calendar.MINUTE) // Create a new instance of TimePickerDialog and return it. return TimePickerDialog(activity, this, hour, minute, DateFormat.is24HourFormat(activity)) } override fun onTimeSet(view: TimePicker, hourOfDay: Int, minute: Int) { // Do something with the time the user picks. } }
Java
public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current time as the default values for the picker. final Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); // Create a new instance of TimePickerDialog and return it. return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity())); } public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // Do something with the time the user picks. } }
詳細については、TimePickerDialog
クラスをご覧ください。
引数。
ここで必要なのは、このフラグメントのインスタンスを できます。
時間選択ツールを表示する
前の例のような DialogFragment
を定義した後は、
時間選択ツールを表示するには、次のように
DialogFragment
を呼び出して、
show()
メソッドを呼び出します。
たとえばこのボタンは、タップするとメソッドを呼び出して ダイアログ:
<Button android:id="@+id/pickTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pick time" />
ユーザーがこのボタンをタップすると、次のメソッドが呼び出されます。
Kotlin
findViewById<Button>(R.id.pickTime).setOnClickListener { TimePickerFragment().show(supportFragmentManager, "timePicker") }
Java
findViewById<Button>(R.id.pickTime).setOnClickListener { TimePickerFragment().show(supportFragmentManager, "timePicker"); }
このメソッドは、インスタンスの新しいインスタンスで show()
を呼び出します。
上記の例で定義されている DialogFragment
。「
show()
メソッドには、
FragmentManager
フラグメントの一意のタグ名を指定します。
日付選択ツールを作成する
作成
DatePickerDialog
TimePickerDialog
を作成するようなものです。違いは
各要素を定義します。
DialogFragment
を使用して DatePickerDialog
を表示するには、次のようにします。
DialogFragment
を拡張して
フラグメントの onCreateDialog()
からの DatePickerDialog
メソッドを呼び出します。
日付選択ツールの DialogFragment を拡張する
DatePickerDialog
の DialogFragment
を定義する手順は次のとおりです。
次の操作を行います。
- インスタンスを返す
onCreateDialog()
メソッドを定義するDatePickerDialog
。 - 実装
DatePickerDialog.OnDateSetListener
ユーザーが日付を設定した場合にコールバックを受け取るためのインターフェースです。
次の例をご覧ください。
Kotlin
class DatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener { override fun onCreateDialog(savedInstanceState: Bundle): Dialog { // Use the current date as the default date in the picker. val c = Calendar.getInstance() val year = c.get(Calendar.YEAR) val month = c.get(Calendar.MONTH) val day = c.get(Calendar.DAY_OF_MONTH) // Create a new instance of DatePickerDialog and return it. return DatePickerDialog(requireContext(), this, year, month, day) } override fun onDateSet(view: DatePicker, year: Int, month: Int, day: Int) { // Do something with the date the user picks. } }
Java
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker. final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of DatePickerDialog and return it. return new DatePickerDialog(requireContext(), this, year, month, day); } public void onDateSet(DatePicker view, int year, int month, int day) { // Do something with the date the user picks. } }
詳しくは、
DatePickerDialog
クラスを参照してください。
必要なのは、このフラグメントのインスタンスを できます。
日付選択ツールを表示する
上記の例のように DialogFragment
を定義した後、
日付選択ツールを表示するには、
DialogFragment
と show()
の呼び出し。
たとえばこのボタンは、タップするとメソッドを呼び出して ダイアログ:
<Button android:id="@+id/pickDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pick date"/>
ユーザーがこのボタンをタップすると、次のメソッドが呼び出されます。
Kotlin
findViewById<Button>(R.id.pickDate).setOnClickListener { val newFragment = DatePickerFragment() newFragment.show(supportFragmentManager, "datePicker") }
Java
findViewById<Button>(R.id.pickDate).setOnClickListener { val newFragment = DatePickerFragment(); newFragment.show(supportFragmentManager, "datePicker"); }
このメソッドは、インスタンスの新しいインスタンスで show()
を呼び出します。
上記の例で定義されている DialogFragment
。「
show()
メソッドには FragmentManager
のインスタンスが必要です。
フラグメントの一意のタグ名を指定します。
自動入力で選択ツールを使用する
2017 年、Android は 自動入力フレームワーク: ユーザーがデータを保存し、さまざまなアプリでフォームに入力できる場合。選択ツール ユーザーが入力候補を変更できる UI を提供することで、 日付または時刻データを格納するフィールドの値です。例: クレジット カード フォームでは、日付選択ツールを使用して、ユーザーは招待状の有効期限を入力または変更できます。 。
選択ツールはダイアログであるため、他のフィールドと一緒にアクティビティに表示されることはありません。選択ツールが表示されていないときに選択ツールデータを表示するには、
ビューには、
EditText
,
選択ツールが表示されていないときに値を表示できます。
EditText
オブジェクトはネイティブにデータ型の自動入力データを想定している
AUTOFILL_TYPE_TEXT
。
一方、自動入力サービスでは、データは
AUTOFILL_TYPE_DATE
適切な表現を作成します。データの不整合を解決するには、
継承されるカスタムビューを作成することをおすすめします。
EditText
を実装し、これらを正しく処理するために必要なメソッドを実装します。
AUTOFILL_TYPE_DATE
型の値。
次の手順に沿って、EditText
のサブクラスを作成します。
AUTOFILL_TYPE_DATE
型の値を処理できます。
EditText
から継承するクラスを作成します。- 実装
getAutofillType()
メソッドを呼び出し、AUTOFILL_TYPE_DATE
を返します。 - 実装
getAutofillValue()
メソッドを呼び出し、AutofillValue
ミリ秒単位の日付を表すオブジェクトです。返品を作成するには 使用する場合は、forDate()
メソッドを使用してAutofillValue
オブジェクトを生成します。 - 実装
autofill()
メソッドを呼び出します。このメソッドは、AutofillValue
パラメータ(型)AUTOFILL_TYPE_DATE
。パラメータを処理するには、Terraform で 文字列表現(mm/yyyy
など)。文字列を使用する ビューにtext
プロパティを設定します。 - ユーザーが
EditText
のカスタム サブクラスで日付を編集するときに選択ツールを表示する機能を実装します。ビューが更新される 値の文字列表現を持つtext
プロパティ ユーザーが選択ツールで選択した項目です。
次の処理を行う EditText
のサブクラスの例:
AUTOFILL_TYPE_DATE
値については、
Java
または
Kotlin
カスタムビューの自動入力サポートの実証について詳しくは、以下をご覧ください。 自動入力フレームワーク。