我是Android开发的初学者。在我的项目中,我创建了一个TableLayout - 我认为GridLayout可以提供更多帮助,但由于我不熟悉GridLayout,因此采用了TableLayout - 使用一些EditTexts来获取用户的值。该活动实际上是一个可提交的表格。在每个EditText的左侧,有一个TextView定义了相应的EditText所期望的内容,因此我不必为EditText设置默认文本(通常用作提示)。此活动中还有一个按钮用于提交此表单。我选择了一些EditTexts作为MUST_FILLED,所以在按钮的自定义监听器类中,我必须检查这些MUST_FILLED是否已被填充。遵循我编码的直觉:
String s4 = machine_id.getText().toString().trim();
if(s4 == null || s4 == ""){
Toast.makeText(v.getContext(),
"Please Input the machine ID", Toast.LENGTH_SHORT).show();
}
对于EditText, machine_id这里是android:id
。此代码最终没有显示toast。所以我认为EditText有一个默认文本值,即使没有手动定义android:text
。然后我写了一个简单的项目来证实我的想法。这是MainActivity.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();
}
}
和main.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();
确实显示了祝酒词。但是,它显示的东西看起来像一个空白但不完全是。
最后,我想知道EditText中android:text的默认值是什么。
提前致谢。
答案 0 :(得分:4)
我相信默认值是一个空字符串。它永远不会为null,因为如果是这样的话,你应该已经在这一行遇到过NullPointerException:
String s4 = machine_id.getText().toString().trim();
查看您的代码,吐司未显示的原因是您使用(s4 == null || s4 == "")
作为if条件。 == 运算符与 .equals()不同。
请尝试将条件更改为"".equals(s4)
。
答案 1 :(得分:2)
没有EditText
的默认值你面临的问题是由于String的匹配不正确,因为String是对象所以
s4 == "";
就像匹配它们的对象引用而不是字符串所以你应该使用
s4.equals("");
而不是上面。
答案 2 :(得分:2)
似乎默认是一个空字符串:“”这在我的程序中对我有用。
答案 3 :(得分:1)
在执行
之前使用null检查器machine_id.getText().toString().trim();
并使用
s4.isEmpty();
(在某些Android版本上)或
s4.length()==0;
方法。
不要使用== for String,因为它会检查参考而不是实际值
答案 4 :(得分:0)
比较字符串的正确方法是,
s1.equals(s2)
以这种方式使用
if(s4.equals(null)||s4.equals("")){
Toast.makeText(v.getContext(),
"Please Input the machine ID", Toast.LENGTH_SHORT).show();
}