如果用户没有输入任何输入,如何在 Android 中的 Edittext 上设置占位符并使用它?

Posted

技术标签:

【中文标题】如果用户没有输入任何输入,如何在 Android 中的 Edittext 上设置占位符并使用它?【英文标题】:How do I set a placeholder on Edittext in Android and use it if no input has been typed by user? 【发布时间】:2014-07-05 04:03:15 【问题描述】:

我想在 android 中有一个 EditText,我有一个占位符,如果用户不键入任何内容,它将用作我的输入。在我的例子中,编辑文本用于提示。

我知道“提示”excisting,它是一个占位符,但它不使用它作为输入。如果我将提示设置为“AAA”并且用户没有输入任何内容并按“OK”,我将得到一个空字符串,而不是“AAA”。

这是我的代码:

private void promptForUsername()
        // get prompts.xml view
        LayoutInflater layoutInflater = LayoutInflater.from(context);

        View promptView = layoutInflater.inflate(R.layout.prompts, null);

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

        // set prompts.xml to be the layout file of the alertdialog builder
        alertDialogBuilder.setView(promptView);

        final EditText input = (EditText) promptView.findViewById(R.id.userInput);


        //setup a dialog window
        alertDialogBuilder
        .setCancelable(false)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() 
            public void onClick(DialogInterface dialog, int id) 
                // get user input and set it to result
                addEvent(levelSelected, input.getText().toString(), Integer.parseInt(points), time + "s");
                sqlLogic();
            
        )
        .setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() 
            public void onClick(DialogInterface dialog, int id) 
                sqlLogic();
                dialog.cancel();
            

        );
        // create an alert dialog
        AlertDialog alertD = alertDialogBuilder.create();
        alertD.show();

        input.setFocusableInTouchMode(true);
        input.requestFocusFromTouch();

        InputMethodManager lManager = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); 
        lManager.showSoftInput(input, 0);

    

version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:padding="10dp" >

    <TextView
        android:id="@+id/textView"
        android:layout_
        android:layout_
        android:text="Type username:"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/userInput"
        android:layout_
        android:inputType="text"
        android:layout_
        android:maxLength="13" 
        android:hint="AAA">

        <requestFocus />
    </EditText>
</LinearLayout>

【问题讨论】:

我在xml中的***.com/questions/8221072/…找到答案,添加:android:hint="text" 【参考方案1】:

只需创建一个字符串变量并有条件地检查它应该是什么。

String text = (input.getText().toString().equals("")? "AAA": input.getText().toString();
ddEvent(levelSelected, text, Integer.parseInt(points), time + "s");

请注意,如果您不了解三元格式,第一行与以下内容相同(以最简单的形式)

String text = "";
if(input.getText().toString().equals("")
    text = "AAA";

else
    text = input.getText().toString();

【讨论】:

谢谢,这将是我的解决方案,我认为 Android 可能有办法自行处理。 顺便说一句:tertiary 实际上被称为ternary【参考方案2】:

在某处添加这个静态方法:

static CharSequence getTextOrHint(TextView tv) 
  return(TextUtils.isEmpty(getText()) ? getHint() : getText());

然后使用该方法检索您的值,如果存在则返回文本,如果不存在则返回提示。

【讨论】:

【参考方案3】:

android:hint="Hint Text" 添加到EditText 声明中。

【讨论】:

这很有帮助。但不适用于上述问题

以上是关于如果用户没有输入任何输入,如何在 Android 中的 Edittext 上设置占位符并使用它?的主要内容,如果未能解决你的问题,请参考以下文章

如何以科学计数法启用用户输入到android edittext

如果用户没有输入任何内容,那么表格中一行的默认日期应该是啥?

Android点击其他任意位置收起软键盘

如果用户在页面名称之后输入尾随“/”(或“/”之后的任何内容),我如何将用户重定向到错误 404 页面?

如何在 Android App 中保存最后输入的编辑文本值?

如何输入任何可见的单个字符,然后立即批处理CMD [复制]