2013-01-20 64 views
0

所以,我想要做的是,如果名稱或聯繫人字段爲空,想要打印該消息,否則提交。 現在,問題是,對於第一次審判(兩個字段都是空的),它給了我'輸入名字'。那麼即使我再次輸入名字,仍然是一樣的。編輯文本值沒有變 - Android eclipse

能否請你幫我..

這裏是代碼...

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final Button sub=(Button) findViewById(R.id.submit); 
    final EditText name=(EditText) findViewById(R.id.editText1); 
    final EditText phone=(EditText) findViewById(R.id.editText2); 

    final String cust_name=name.getText().toString(); 
    final String phone_num=phone. getText(). toString(); 


sub.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
      if(cust_name.length()==0) 
        Toast.makeText(MainActivity.this, "Name must be  provided!", Toast.LENGTH_SHORT).show(); 

      else if(phone_num.length()==0) 
       Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show(); 

      else 
      { 
      Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show(); 
      finish(); 
      } 
     } 
}); 
+0

如果能幫助您解決問題,您可以接受我的解決方案。 –

回答

0

此問題在下面行代碼

oncreate(--) { 
--- 
--- 
    final String cust_name=name.getText().toString(); // here edittexts are empty hence string variables are empty too. 
    final String phone_num=phone. getText(). toString(); 

} 

要設置CUST_NAME和PHONE_NUM在oncreate()方法,因此它們總是空的,不管你以後輸入什麼內容..你的代碼必須如下所示

super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      final Button sub=(Button) findViewById(R.id.submit); 
      final EditText name=(EditText) findViewById(R.id.editText1); 
      final EditText phone=(EditText) findViewById(R.id.editText2); 




     sub.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
         String cust_name=name.getText().toString(); 
        String phone_num=phone. getText(). toString(); 
        if(cust_name.length()==0) 
          Toast.makeText(MainActivity.this, "Name must be  provided!", Toast.LENGTH_SHORT).show(); 

        else if(phone_num.length()==0) 
         Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show(); 

        else 
        { 
        Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show(); 
        finish(); 
        } 
       } 
     }); 
+0

你能告訴我有什麼問題嗎? – bookishq

+0

是啊看到編輯答案... – AAnkit

1

您必須在按鈕的onclicklistener中輸入getText()代碼行。

這不起作用,因爲您正在從onCreate()的edittext中獲取文本。 onCreate()是系統在活動啓動時調用的回調函數。到它開始時,edittexts不包含任何值。但是,只有在編輯文本中輸入了一些值後,只有當您單擊按鈕時才能獲取值。所以,getText()代碼行應該被移動到onClick(),當你點擊按鈕時總是會調用它。

sub.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

String cust_name=name.getText().toString(); 
    String phone_num=phone. getText(). toString(); 

      if(cust_name.length()==0) 
        Toast.makeText(MainActivity.this, "Name must be  provided!", Toast.LENGTH_SHORT).show(); 

      else if(phone_num.length()==0) 
       Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show(); 

      else 
      { 
      Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show(); 
      finish(); 
      } 
     } 
}); 
0

移動name.getText().toString()phone. getText(). toString()內點擊鏈接,從它獲得最新的值:

String cust_name,phone_num; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
     // your code here 
sub.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     cust_name=name.getText().toString(); 
     phone_num=phone. getText(). toString(); 
     //..your code here 
+0

哦傻我...謝謝大家! – bookishq

+0

@bookishq:如果您在onCreate之前聲明所有元素並在setContentView之後的Create中初始化它,那麼您可以訪問其他方法中的所有元素 –

0

試試這個方法:

sub.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

      final String cust_name=name.getText().toString(); 
      final String phone_num=phone. getText(). toString(); 

      if(cust_name.length()==0) 
        Toast.makeText(MainActivity.this, "Name must be  provided!", Toast.LENGTH_SHORT).show(); 

      else if(phone_num.length()==0) 
       Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show(); 

      else 
      { 
      Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show(); 
      finish(); 
      } 
     } 
}); 
0

使其嵌套類型condtion然後檢查將正常工作

sub.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
      if(cust_name.equals("")) 
       { 
       if(phone_num.equals("")) 
        Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show();} 

        Toast.makeText(MainActivity.this, "Name must be  provided!", Toast.LENGTH_SHORT).show();}  


      else 
      { 
      Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show(); 
      finish(); 
      } 
     } 
}); 
0

您必須聲明edittext變量public,以便您可以在此類中的任何位置使用。

String cust_name,phone_num; 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
//your code for intialize another variable 
sub.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
    if(cust_name.getText().toString().length()==0){ 
     //toast with error message 
    }else if(phone_num.getText().toString().length()==0){ 
     //toast with error message 
    }else{ 
     //you have to get fresh value   

    } 
    } 
}); 
0

根據您分享的代碼判斷,您的姓名和電話號碼字符串將始終爲空。因此,無論您添加到EditText框中,它們都不會填充到字符串中,從而一次又一次地拋出同樣的錯誤。

以下應該工作。

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final Button sub=(Button) findViewById(R.id.submit); 
    final EditText name=(EditText) findViewById(R.id.editText1); 
    final EditText phone=(EditText) findViewById(R.id.editText2); 

    //final String cust_name=name.getText().toString(); **REMOVE** 
    //final String phone_num=phone. getText(). toString(); **REMOVE** 


sub.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
      String cust_name=name.getText().toString(); 
      String phone_num=phone. getText(). toString(); 
      if(cust_name.length()==0) 
        Toast.makeText(MainActivity.this, "Name must be  provided!", Toast.LENGTH_SHORT).show(); 

      else if(phone_num.length()==0) 
       Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show(); 

      else 
      { 
      Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show(); 
      finish(); 
      } 
     } 
}); 

這一次,當你按下提交按鈕,我們將有在的EditText框THAT時刻的文本。因此,如果您通過用戶界面輸入內容,它將不會爲空。

0

只需使用[TextViewName].getText().length()==0代替[TextViewName].getText()==0

0

它不工作,因爲你是從在OnCreate的edittexts()獲取文本。 onCreate()在活動開始時由系統調用。那時edittexts不包含任何值。但是,只有在編輯文本中輸入了一些值後,只有當您單擊按鈕時才能獲取值。

移動

name.getText()。的toString()

電話。 gettext的()。 toString()

裏面的按鈕點擊獲取它的最新價值。