ユーザーが入力するときに入力を検証する

ユーザーがテキスト フィールドに入力する際に、入力内容を検証できます。たとえば、名前、メールアドレス、住所、その他の連絡先情報を入力する際に検証できます。この検証により、エラーを減らし、ユーザーの時間を節約できます。

結果

有効なテキスト入力
図 1.有効なメールアドレスが入力されたときにエラー メッセージが表示されない、メール検証ツール付きのテキスト入力フィールド。
エラーを含む無効なテキスト入力
図 2.無効なメールアドレスが入力されたときにエラー メッセージが表示されるテキスト入力フィールド。

バージョンの互換性

この実装では、プロジェクトの minSDK を API レベル 21 以上に設定する必要があります。

依存関係

ユーザーが入力する際に検証する

次のコードを使用して、フィールド入力を表示し、ユーザーが入力する際にテキストを検証します。情報が検証されない場合は、エラー メッセージが表示され、ユーザーが入力内容を修正できます。

class EmailViewModel : ViewModel() {
    var email by mutableStateOf("")
        private set

    val emailHasErrors by derivedStateOf {
        if (email.isNotEmpty()) {
            // Email is considered erroneous until it completely matches EMAIL_ADDRESS.
            !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()
        } else {
            false
        }
    }

    fun updateEmail(input: String) {
        email = input
    }
}

@Composable
fun ValidatingInputTextField(
    email: String,
    updateState: (String) -> Unit,
    validatorHasErrors: Boolean
) {
    OutlinedTextField(
        modifier = Modifier
            .fillMaxWidth()
            .padding(10.dp),
        value = email,
        onValueChange = updateState,
        label = { Text("Email") },
        isError = validatorHasErrors,
        supportingText = {
            if (validatorHasErrors) {
                Text("Incorrect email format.")
            }
        }
    )
}

@Preview
@Composable
fun ValidateInput() {
    val emailViewModel: EmailViewModel = viewModel<EmailViewModel>()
    ValidatingInputTextField(
        email = emailViewModel.email,
        updateState = { input -> emailViewModel.updateEmail(input) },
        validatorHasErrors = emailViewModel.emailHasErrors
    )
}

コードに関する主なポイント

  • OutlinedTextField コンポーネントを再利用する Composable を定義し、バリデータ エラー メッセージをユーザーが入力する際に表示するために必要なパラメータを追加します。
  • EmailViewModel は、状態を維持し、メール検証ロジックを提供するために使用されます。
  • isError が true の場合、UI に検証エラー状態の視覚的なインジケーターが表示されます。
  • 完全で正しいメールが入力されるまで、コンポーネントに「メールの形式が正しくありません」と表示されます。

このガイドを含むコレクション

このガイドは、Android 開発の幅広い目標をカバーする、厳選されたクイック ガイド コレクションの一部です。

テキストは UI の主要な構成要素です。アプリでテキストを表示して優れたユーザー エクスペリエンスを提供する方法について説明します。
ユーザーがテキストを入力したり、他の入力方法を使用したりしてアプリを操作できるようにする方法について説明します。

ご不明な点やフィードバックがある場合

よくある質問のページでクイック ガイドについて確認するか、お問い合わせください。