1

ここでいくつか問題が発生しました。EditText の配列を作成しましたが、正常に動作しています。EditText の 1 つが空の場合、エラーが発生します。これが私のコードです:

int[] textIDs = new int[] {R.id.etFirstName, R.id.etLastName, R.id.etEmail, R.id.etAddress, R.id.etCity, R.id.etRegion, R.id.etMobile, R.id.etLandLine, R.id.etYear, R.id.etMonth, R.id.etDay };
        for(int j=0; j<textIDs.length; j++) {
            EditText editText = (EditText) findViewById(textIDs[j]);
            if(editText.getText().toString().trim().equals(""))
            {
                 // editText is empty
                Toast.makeText(MainActivity.this, "Request cannot performed..\n Please ensure all fields are filled", Toast.LENGTH_SHORT).show();
                break;
            } 
            else 
            {
                 // editText is not empty
                Toast.makeText(MainActivity.this, "12", Toast.LENGTH_SHORT).show();
            }

このコードを使用する主な問題は、このコードが Toast.makeText(MainActivity.this, "12", Toast.LENGTH_SHORT).show(); すべてのループで示し続ける機能をループが実行し続けることです。ループが完了した後にこのトーストが表示される方法はありますか?

4

3 に答える 3

1

for ループの外に配置します。

boolean isNotEmpty = false;

    for(int j=0; j<textIDs.length; j++) {
                EditText editText = (EditText) findViewById(textIDs[j]);
                if(editText.getText().toString().trim().equals(""))
                {
                     // editText is empty
                    Toast.makeText(MainActivity.this, "Request cannot performed..\n Please ensure all fields are filled", Toast.LENGTH_SHORT).show();

                    isNotEmpty = false;   // Marking as Empty
                    break;
                } 
                else 
                {
                     // editText is not empty

                    isNotEmpty = true     // Marking as Non-Empty

                }
             }
    if (isNotEmpty){
    Toast.makeText(MainActivity.this, "12", Toast.LENGTH_SHORT).show();
    }
于 2012-08-14T02:18:19.203 に答える
0
int[] textIDs = new int[] {R.id.etFirstName, R.id.etLastName, R.id.etEmail, R.id.etAddress, R.id.etCity, R.id.etRegion, R.id.etMobile, R.id.etLandLine, R.id.etYear, R.id.etMonth, R.id.etDay };
Toast t; 

    for(int j=0; j<textIDs.length; j++) {
        EditText editText = (EditText) findViewById(textIDs[j]);
        if(editText.getText().toString().trim().equals(""))
        {// editText is empty
            t = Toast.makeText(MainActivity.this, "Request cannot performed..\n Please ensure all fields are filled", Toast.LENGTH_SHORT);
            break;
        } 
        else 
        {
             // editText is not empty
            static Toast toast = Toast.makeText(MainActivity.this, "12", Toast.LENGTH_SHORT);
            t = toast;
        }
    }
    t.show();
于 2012-08-14T02:25:55.887 に答える
0
    boolean doShowToast = false;
    int[] textIDs = new int[] {R.id.etFirstName, R.id.etLastName, R.id.etEmail, R.id.etAddress, R.id.etCity, R.id.etRegion, R.id.etMobile, R.id.etLandLine, R.id.etYear, R.id.etMonth, R.id.etDay };
    for(int j=0; j<textIDs.length; j++) {
        EditText editText = (EditText) findViewById(textIDs[j]);
        if(editText.getText().toString().trim().equals(""))
        {// editText is empty
            Toast.makeText(MainActivity.this, "Request cannot performed..\n Please ensure all fields are filled", Toast.LENGTH_SHORT).show();
            break;
        } 
        else 
        {
             // editText is not empty
            doShowToast = true;
        }
    }
    if(doShowToast){
         Toast.makeText(MainActivity.this, "12", Toast.LENGTH_SHORT).show();
    }

ブール値を使用すると、ループが終了した後、else ステートメントが呼び出された場合にのみ、else ステートメントのトーストが 1 回だけ表示されるため、「editText が空でない」場合にのみ表示されます。

于 2012-08-14T02:18:47.303 に答える