0

所以,我想做的是,如果姓名或联系人字段为空,则要打印消息,否则提交。现在,问题是,对于第一次试验(两个字段都为空),它给了我“输入名称”。然后即使我再次输入名称,仍然一样。

你能帮我么..

这是代码...

    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();
            }
        }  
});  
4

9 回答 9

1

您必须在按钮getText()的 中输入代码行。onclicklistener

它不起作用,因为您从 onCreate() 中的编辑文本中获取文本。onCreate()是活动开始时系统调用的回调。到它开始时,edittexts 不包含任何值。但是只有在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();
            }
        }  
});
于 2013-01-20T11:29:42.200 回答
0

从您共享的代码来看,您的姓名和电话号码字符串将始终为空。因此,无论您向 EditText 框中添加什么内容,它们都不会被填充到 String 中,从而一次又一次地向您抛出相同的错误。

以下应该工作。

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 框中的文本。因此,如果您通过 UI 输入内容,它不会为空。

于 2013-10-28T13:54:19.130 回答
0

它不起作用,因为您从 onCreate() 中的编辑文本中获取文本。onCreate() 在活动开始时由系统调用。那时编辑文本不包含任何值。但是只有在edittexts中输入了一些值之后,只有你点击按钮才能得到这些值。

移动

name.getText().toString()

电话。获取文本()。toString()

内部按钮单击以从中获取最新值。

于 2014-02-13T09:47:35.377 回答
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           

    }
    }
});
于 2013-02-08T05:20:48.477 回答
0

使其成为嵌套类型条件,然后检查它是否可以正常工作

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();
            }
        }  
});  
于 2013-01-20T11:41:41.283 回答
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();

}

您在 oncreate() 方法中设置 cust_name 和 phone_num ,因此它们始终为空,无论您稍后键入什么......您的代码必须如下所示

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();
                    }
                }  
        });  
于 2013-01-20T11:27:44.667 回答
0

只需使用[TextViewName].getText().length()==0而不是[TextViewName].getText()==0

于 2014-01-26T06:15:32.617 回答
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
于 2013-01-20T11:29:55.553 回答
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();
            }
        }  
});  
于 2013-01-20T11:30:22.613 回答