2012-06-05 22 views
1

我是Android开发的初学者。在我的项目中,我创建了一个TableLayout - 我认为GridLayout可以做更多的帮助,但由于我不熟悉GridLayout,因此使用了TableLayout - 使用一些EditTexts从用户获取值。该活动实际上是一种可提交的表单。在每个EditText的左边,有一个TextView定义了相应的EditText的期望值,所以我不必为EditText(通常用作提示)设置默认文本。此活动中还有一个用于提交此表单的按钮。我选择了一些EditTexts作为MUST_FILLED,所以在按钮的自定义侦听器类中,我必须检查这些MUST_FILLED是否已被填充。跟着我编写如下直觉:这里当android:text未定义时,android:textTextText的默认值是什么?

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为一个EditText。此代码结束时不显示烤面包。所以我认为即使没有手动定义android:text,EditText也有默认的文本值。然后我写了一个简单的项目来确认我的想法。这里是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的默认值是多少。

在此先感谢。

回答

4

我相信,默认值是一个空字符串。它永远不会为null,因为如果是那样的话,你应该已经遇到了在该行一个NullPointerException:

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

看你的代码,为什么土司没有露面的原因是因为你用(s4 == null || s4 == "")为您如果条件。==运算符不同于.equals()。 请尝试将您的条件更改为"".equals(s4)

+0

得到启发。谢谢。 – user1437534

+0

非常欢迎 – vida

2

有一个EditText你所面对的问题没有默认值是由于字符串的匹配不当的字符串是对象,以便

s4 == ""; 

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

s4.equals(""); 

而不是上面。

+0

哦,愚蠢的错误。非常感谢! – user1437534

+0

如果真的有帮助,然后考虑接受答案,通过点击下面的票数计数... :) –

+0

我给了另一个答案,因为他提供了更多的信息,如NullPointerException,这启发了我的灵感。希望你不介意:) – user1437534

1

使用null检查做

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

而且之前也使用

s4.isEmpty(); 

(在某些Android版本)或

s4.length()==0; 

方法。

不使用==为字符串,因为它会检查参考,不实际值

+0

谢谢。帮助 – user1437534

0

比较字符串是用正确的方式,

s1.equals(s2) 

使用这种方式

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

谢谢。我确实忘记了一些基本概念。如果他知道这件事,我的老师会拿回我的学位。< – user1437534

2

似乎默认为空字符串:“”那我的程序为我工作。

+0

你看到旁边有绿色检查的答案吗?这就是已经解决了这个问题的答案。 – fancyPants

+0

好吧,对,stackoverflow新kindof ...指出:) – gnyrfta

相关问题