Ошибка проверки соответствия Android-java - необходимо исправить логику кода

Это мой код примера страницы сбора сведений, где, как только клиент вводит свои данные, он будет сохраняться до следующей переустановки этого приложения, в коде нет ошибок, и он будет выполняться правильно, но клиент сможет перейти к следующее занятие без заполнения формы

и я попробовал немного проверок условий, но все те не удалось, нужна помощь в логике кода

    package asr.customer;

import java.io.File;
import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.content.ContentValues;
import android.text.Editable;
import android.database.sqlite.SQLiteDatabase;
import android.view.*;
import android.widget.*;

public class ASRCustomerAppActivity extends Activity implements Button.OnClickListener{
/** Called when the activity is first created. */
    Button btn;
    ContentValues values= new ContentValues();
    SQLiteDatabase db;
    String first,last,state,city,g;
    int day,month,year;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn=(Button)findViewById(R.id.save);
        btn.setOnClickListener(this);
        File dbtest =new File("/data/data/asr.customer/databases/customerdetail1.db");
        if(dbtest.exists())
        {
          // what to do if it does exist
            Intent intent=new Intent();
            intent.setClass(this,mapActivity.class);
            startActivity(intent);
            finish();
        }
        else
        {

           db=openOrCreateDatabase("customerdetail1.db",SQLiteDatabase.CREATE_IF_NECESSARY,null);

            db.setVersion(1);
            db.setLocale(Locale.getDefault());
            db.setLockingEnabled(true);
            final String table_create="CREATE TABLE customer("+"firstname TEXT,"+"lastname TEXT,"+"day INTEGER,"+"gender TEXT,"+"month INTEGER,"+"year INTEGER,"+"city TEXT,"+"state TEXT);";
            db.execSQL(table_create);
            EditText i2=(EditText)findViewById(R.id.first);
            first=i2.getText().toString();
            EditText i3=(EditText) findViewById(R.id.last1);
            last=i3.getText().toString();

            DatePicker d=(DatePicker) findViewById(R.id.date);
            day=d.getDayOfMonth();
            month= d.getMonth()+1;
            year=d.getYear();
            RadioGroup rg= (RadioGroup) findViewById(R.id.radiogroup);
            RadioButton r1= (RadioButton) findViewById(R.id.radioButton1);
            RadioButton r2= (RadioButton) findViewById(R.id.radioButton2);
            if(r1.isChecked()==true)
            {
            g=r1.getText().toString();
            }
            else
            {
            g= r2.getText().toString();
            }

            EditText i4=(EditText) findViewById(R.id.city);
            city=i4.getText().toString();
            EditText i5=(EditText) findViewById(R.id.state);
            state=i5.getText().toString();





            }
        }
    public void onClick(View v) {
        // what to do if it doesn't exist

        do{
            //  code
            Toast.makeText(ASRCustomerAppActivity.this, "Please Fill The Blank Spaces", Toast.LENGTH_LONG).show();

        }while((first.equalsIgnoreCase("") || last.equalsIgnoreCase("") || city.equalsIgnoreCase("") || state.equalsIgnoreCase("")));


            values.put("firstname",first);
            values.put("lastname",last);
            values.put("day",day);
            values.put("month",month);
            values.put("year",year);
            values.put("gender",g);
            values.put("city",city);
            values.put("state",state);

            db.insert("customer", null, values);

            Intent intent=new Intent();
            intent.setClass(this,mapActivity.class);
            startActivity(intent);
            finish();
        }



    }

2 ответа

Решение

Вместо этого

while((first.equalsIgnoreCase("") || last.equalsIgnoreCase("") || city.equalsIgnoreCase("") || state.equalsIgnoreCase("")));

попробуй это

while((first.length==0|| last.length==0 || city.length==0|| state.length==0));

и поместите это в свой onClick

 first=i2.getText().toString();
 last=i3.getText().toString();
city=i4.getText().toString();
state=i5.getText().toString();

Вы не можете получить значения внутри вашего метода onCreate, потому что представление не рисуется, пока окно не получит фокус.

Вы должны сделать это внутри вашего метода onClick, чтобы он работал так же, как и переход к методу buttonClick:

city=i4.getText().toString();
Другие вопросы по тегам