2012-06-05 57 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

相關問題