编辑文本值不会改变 - Android eclipse

时间:2013-01-20 11:26:16

标签: android eclipse android-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();
    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();
            }
        }  
});  

9 个答案:

答案 0 :(得分:1)

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

它无效,因为您从onCreate()的edittexts获取文本。 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();
            }
        }  
});

答案 1 :(得分: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();
                    }
                }  
        });  

答案 2 :(得分: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

答案 3 :(得分: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();
            }
        }  
});  

答案 4 :(得分: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();
            }
        }  
});  

答案 5 :(得分: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           

    }
    }
});

答案 6 :(得分: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();
            }
        }  
});

这一次,当您按下提交按钮时,我们将在 THAT 时刻获取EditText框中的文本。因此,如果您通过UI输入内容,它将不会为空。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

它无效,因为您从onCreate()的edittexts获取文本。当活动开始时,系统会调用onCreate()。那时edittexts不包含任何值。但只有在edittexts中输入了一些值后,才能在单击按钮时获取值。

移动

  

name.getText()。的toString()

  

电话。 gettext的()。的toString()

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