2012-12-18 3 views
-1

내 응용 프로그램에 저장 버튼을 사용하고 있습니다. 저장 버튼을 클릭하면 각 필드의 유효성을 검사하고 "이 필드를 입력하십시오", "이 필드에 올바른 형식으로 입력하십시오"또는 "이것을 선택하십시오"와 같은 오류 메시지를 표시합니다.버튼에 대한 유효성 확인

나는 8 개의 편집 문구 상자와 2 개의 회 전자가 있으며 TextViewListView입니다. Android에서는 모든 입력란에서 입력란 유효성 검사를 사용하는 방법과 각 입력란의 유효성을 검사 한 후 데이터를 성공적으로 저장합니다.

내 자바 코드는 다음과 같습니다

public class non_ticket_task extends Activity implements OnItemSelectedListener{ 


    public static String complain_date; 
    public static String complain_time; 
    public static String job_performed; 
// public static String time; 
    public static String next_due_on; 
    static TelephonyManager tm; 

    // Progress Dialog 
    private ProgressDialog pDialog; 

    JSONParser jsonParser = new JSONParser(); 
    TextView cus_name_txt; 
    EditText complain_date_txtbx; 
    EditText complain_time_txtbx; 
    EditText job_performed_txtbx; 
    EditText date_txtbx; 
    EditText lat_txtbx; 
    EditText lon_txtbx; 
    EditText next_due_on_txtbx; 
    Button btnadd; 

    // url to create new product 
    private static String url_create_task = "http://192.168.2.1/android_connect/create_product.php"; 

    // JSON Node names 
    private static final String TAG_SUCCESS = "success"; 


    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.non_ticket_task); 

     this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
     tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 

    // Buttons 
     btnadd = (Button) findViewById(R.id.addbtn); 

    // button click event 
     btnadd.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       // creating new task in background thread 
       new CreateNewTask().execute(); 
      } 
     }); 


     cus_name_txt = (TextView)findViewById(R.id.textView1); 
     cus_name_txt.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Onclick_click1(cus_name_txt); 


      } 
     }); 


     complain_date_txtbx = (EditText) findViewById(R.id.complain_date_txt); 
     complain_date_txtbx.setText(non_ticket_task.complain_date); 

     complain_time_txtbx = (EditText) findViewById(R.id.complain_time_txt); 
     complain_time_txtbx.setText(non_ticket_task.complain_time); 

     job_performed_txtbx = (EditText) findViewById(R.id.job_performed_txt); 
     job_performed_txtbx.setText(non_ticket_task.job_performed); 

     date_txtbx = (EditText) findViewById(R.id.date_txt); 
     date_txtbx.setText(" " 
       + String.valueOf(java.text.DateFormat.getDateTimeInstance() 
         .format(Calendar.getInstance().getTime()))); 


     MyLocation loc = new MyLocation(this.getApplicationContext()); 
     lon_txtbx = (EditText) findViewById(R.id.lon_txt); 
     lon_txtbx.setText(String.valueOf(loc.lon)); 
     lat_txtbx = (EditText) findViewById(R.id.lat_txt); 
     lat_txtbx.setText(String.valueOf(loc.lat)); 

     next_due_on_txtbx = (EditText) findViewById(R.id.next_due_on_txt); 
     next_due_on_txtbx.setText(non_ticket_task.next_due_on); 



     Spinner status = (Spinner) findViewById(R.id.status_spinner); 
    // Create an ArrayAdapter using the string array and a default spinner layout 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
      R.array.Status_array, android.R.layout.simple_dropdown_item_1line); 
    // Specify the layout to use when the list of choices appears 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    // Apply the adapter to the spinner 
    status.setAdapter(adapter); 


    Spinner severity = (Spinner) findViewById(R.id.severity_spinner); 
    // Create an ArrayAdapter using the string array and a default spinner layout 
    ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this, 
      R.array.Severity_array, android.R.layout.simple_dropdown_item_1line); 
    // Specify the layout to use when the list of choices appears 
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    // Apply the adapter to the spinner 
    severity.setAdapter(adapter1); 


    } 


    public void onItemSelected(AdapterView<?> parent, View view, 
      int pos, long id) { 
     // An item was selected. You can retrieve the selected item using 
     // parent.getItemAtPosition(pos) 
    } 

    public void onNothingSelected(AdapterView<?> parent) { 
     // Another interface callback 
    } 

    public void Onclick_click1(final TextView cus_name_txt) 
    { 
     final TextView txtbx = (TextView) cus_name_txt; 

     if(cus_name_txt.getId()==R.id.textView1) 
     { 

      final CharSequence[] items = {"Ali Asghar","Ali Shah","Tamseel","Bilal","Daniyal","Muzamil","Faraz","Uzair","Mohsin","Mehran","Babar","Ameen","Zeeshan","Maqsood","Hasan","Taqi","Talib","Asif","Mudasir"}; 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("Customers Name"); 
      //builder.setI 
      builder.setItems(items, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int item) { 
        //Toast.makeText(getApplicationContext(), con.get(item).getCountrName(), Toast.LENGTH_SHORT).show(); 
        txtbx.setText(items[item]); 
        System.out.println("Item is: "+items[item]); 
        /*CONTRY_ID = con.get(item).getCountryId(); 
        stateET.requestFocus();*/ 
       } 
      }); 

      builder.show(); 

     } 

} 

    /** 
    * Background Async Task to Create new product 
    * */ 
    class CreateNewTask extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(non_ticket_task.this); 
      pDialog.setMessage("Saving Details.."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 

     /** 
     * Creating task 
     * */ 
     protected String doInBackground(String... args) { 
      String cus_name = cus_name_txt.getText().toString(); 
      String complain_date = complain_date_txtbx.getText().toString(); 
      String complain_time = complain_time_txtbx.getText().toString(); 
      String job_performed = job_performed_txtbx.getText().toString(); 
      String date = date_txtbx.getText().toString(); 
      String next_due_on = next_due_on_txtbx.getText().toString(); 
      String lat = lat_txtbx.getText().toString(); 
      String lon = lon_txtbx.getText().toString(); 

      // Building Parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("cus_name", cus_name)); 
      params.add(new BasicNameValuePair("complain_date", complain_date)); 
      params.add(new BasicNameValuePair("complain_time", complain_time)); 
      params.add(new BasicNameValuePair("job_performed", job_performed)); 
      params.add(new BasicNameValuePair("date", date)); 
      params.add(new BasicNameValuePair("next_due_on", next_due_on)); 
      params.add(new BasicNameValuePair("lat", lat)); 


      // getting JSON Object 
      // Note that create product url accepts POST method 
      JSONObject json = jsonParser.makeHttpRequest(url_create_task, 
        "POST", params); 

      // check log cat fro response 
      Log.d("Create Response", json.toString()); 

      // check for success tag 
      try { 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) { 
        // successfully created product 
        Intent i = new Intent(getApplicationContext(), My_Task.class); 
        startActivity(i); 

        // closing this screen 
        finish(); 
       } else { 
        // failed to create product 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog once done 
      pDialog.dismiss(); 
     } 

    } 
+0

에게 당신이 사용할 수있는 같은 것이

if(validate()){ new CreateNewTask().execute() } else{ showErrorMsg(msg); } 

처럼이 기능을에서 호출 할 수 있습니다 TextWatcher. 이것을 확인하십시오 http://stackoverflow.com/questions/2763022/android-how-can-i-validate-edittext-input – Rahul

+0

@rahulkapoor 그는 "save"를 눌러서 털썩 내리고 싶습니다. – Gangnus

+0

어디에 문제가 있습니까? 필드를 확인하거나 오류 메시지를 저장하거나 출력 할 수 없습니까? – Gangnus

답변

0

솔직하게 말해서 유효성 검사 프로세스는 크게 당신이 유효성을 검사하려는 방법과 방법에 달려 있습니다. 예를 들어 초점을 유지 한 직후 또는 편집 버튼의 제출 버튼을 클릭 한 후에 만 ​​텍스트의 유효성을 검사하려는 경우. TextWatchers는 빠르고 사용자 친화적 인 검증을 목적으로합니다. 당신이 버튼의 클릭에 유효성을 검사 할 그러나 경우 즉시 오류 검출 검사 오류 (보정) 사용하려는 경우, 당신은

boolean void validateInput(){ 
boolean retStatus=false; 
if((textView1.getText().length()==0 || textView1.getText().equals("") && (any other condition)){ 
    retStatus=true; 
    textView1.setError("You have entered wrong value in textView 1"); 
} 
//similarly for other controls 
------ 
----- 
-- 

return retStatus; 
} 

같은 기능을 할 수 있습니다 대신에 방법 위와 같이 "표시 할 수 있습니다 빠른 것 한 번에 "오류가 발생했습니다. 사용자에게 맞는 것을 결정할 수 있습니다.

사용자 입력 오류를 줄이려면 edittext에 텍스트 유형을 사용하십시오. 예를 들어 전화 번호에는 editText를 사용하고 전자 메일에는 이름에 영문자를 입력하거나 emailid를 입력하십시오. 사용자가 해당 EditText에서 수행해야 할 작업을 나타 내기위한 힌트를 사용하십시오. 이메일 ID는 여기에 있습니다.

해피 코딩 !!

+0

에 대한 유효성을 넣어 확인하려면 당신은 내가 설명하고 이해할 수있는 솔루션을 제공합니다.u 감사합니다 – Mona

0

안녕 난 그냥 당신이 글고 치기에 뭔가를 입력하는 사용자에게 피드백을 제공 있는지 확인하려면 매우 잘 이해합니다. 그게 당신이 원하는 경우에, 당신은 지금처럼 EditText.getText의 아이폰에를 확인해야 :이 도움이

if (cus_name_txt.getText().Lenght()==0){ 
//Your message here 

} 

희망을.

+0

네, 맞습니다 :) 감사합니다 – Mona

0

onPreExecute에서 유효성 검사를 수행합니다. 필드가 비어 있거나 잘못된 경우 해당 필드에 오류 메시지를 설정합니다. 하나 이상의 유효하지 않은 필드가 있으면 AsyncTask를 취소하고 오류를 표시합니다. 사용자가 오류를 수정하면 저장을 다시 누를 수 있습니다.

doInBackground가 아닌 onPreExecute의 필드에서 문자열을 가져와야합니다. 해당 메서드에서 Ui를 수정할 수 없기 때문입니다.

+0

그래, 그 적절한 preExecute에 – Mona

0

이 같은 기능 validatefields을()하고, 검증 기능이

private boolean validate(){ 
boolean retStatus=false; 

if((textView1.getText().length()==0 || textView1.getText().equals("")){ 
    retStatus=false; 
    msg = "Please fill TextView 1"; 

} 
else if (---check other 9 condition in the same way--) 

} 

if (!msg.equals("")){ 
    return false; 
    } 
else { 
    return true; 
} 

}

+0

u 전사를 보내 주셔서 감사합니다 :) – Mona

+0

@Mona 그것이 도움이된다면 ans를 upvote하십시오. 다른 사람들에게 도움이 될 것입니다. –

관련 문제