EditText 的 android:text 的默认值是多少,而 android:text 未定义



我是Android开发的初学者。在我的项目中,我创建了一个TableLayout--我认为GridLayout可以提供更多帮助,但由于我不熟悉GridLayout,因此采用了TableLayout--使用一些EditTexts从用户那里获取值。该活动实际上是一个可提交的表单。在每个 EditText 的左侧,都有一个 TextView,定义了对应 EditText 的期望,所以我不必也没有为 EditText 设置默认文本(通常用作提示)。此活动中还有一个用于提交此表单的按钮。我选择了一些 EditText 作为MUST_FILLED文本,因此在按钮的自定义侦听器类中,我必须检查这些MUST_FILLEDs是否已填充。遵循我编码的直觉如下:

String s4 = machine_id.getText().toString().trim();
if(s4 == null || s4 == ""){
    Toast.makeText(v.getContext(), 
            "Please Input the machine ID", Toast.LENGTH_SHORT).show();
}

machine_id这里是编辑文本的android:id。此代码最终不显示 toast。所以我认为 EditText 有一个默认的文本值,即使它不是手动定义的android:text。然后我写了一个简单的项目来证实我的想法。这是主要活动.java

public class EditText_testActivity extends Activity implements View.OnClickListener{
/** Called when the activity is first created. */
private String text;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        EditText et = (EditText)findViewById(R.id.et01);
        text = et.getText().toString();
        Button btn = (Button)findViewById(R.id.btn01);
        btn.setOnClickListener(this);
    }
@Override
public void onClick(View v) {
    if(text != null)
        Toast.makeText(v.getContext(), text, Toast.LENGTH_SHORT).show();
    else
        Toast.makeText(v.getContext(), "null", Toast.LENGTH_SHORT).show();
}
}

和主要.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et01" />
    <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:id="@+id/btn01"
        android:text="TouchMe"/>
</LinearLayout>

它确实证明了 EditText 具有默认文本值,因为Toast.makeText(v.getContext(), text, Toast.LENGTH_SHORT).show();确实显示了一个 Toast。但是,它显示的内容看起来像空白区域,但不完全是空白。

最后,我想知道 EditText 中 android:text 的默认值是什么。

提前谢谢。

我相信

默认值是一个空字符串。它永远不会为空,因为如果是这种情况,您应该已经在以下行遇到了 NullPointerException:

String s4 = machine_id.getText().toString().trim();

查看您的代码,Toast 未显示的原因是您使用(s4 == null || s4 == "")作为 if 条件。== 运算符不同于 .equals()。请尝试改为将状况更改为"".equals(s4)

没有

EditText的默认值,您面临的问题是由于字符串匹配不正确,因为字符串是对象,因此

s4 == "";

就像匹配他们的对象引用而不是字符串,所以你应该使用

s4.equals("");

而是在上面。

似乎默认值为空字符串:" 这在我的程序中对我有用。

在执行操作之前使用空检查器

machine_id.getText().toString().trim();

并且还使用

s4.isEmpty();

(在某些安卓版本上)或

s4.length()==0;

方法。

不要对字符串使用 ==,因为它会检查引用而不是实际值

比较字符串的正确方法是:

s1.equals(s2)

以这种方式使用它

if(s4.equals(null)||s4.equals("")){
    Toast.makeText(v.getContext(), 
            "Please Input the machine ID", Toast.LENGTH_SHORT).show();
}

最新更新