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()のedittextsからテキストを取得しているため、機能していません。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();
            }
        }  
});
于 2013-01-20T11:29:42.200 に答える
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

移動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 に答える
0

[TextViewName].getText().length()==0代わりに単に使用する[TextViewName].getText()==0

于 2014-01-26T06:15:32.617 に答える
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 ボックスにあるテキストを取得します。したがって、UI から何かを入力しても空にはなりません。

于 2013-10-28T13:54:19.130 に答える
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

このクラスのどこでも使用できるように、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 に答える