2011-12-27 29 views
5

Tôi có mã sau mà tôi muốn sử dụng để đảm bảo rằng văn bản của tôi sẽ không trống. Vì vậy, nếu là người đầu tiên rút ra 0 (zero) được lấy ra nó phải trở về 0 khi thay đổi tập trung, đây là ứng dụng cho đến nay:Ngăn không cho văn bản bị trống

package your.test.two; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 

public class TesttwoActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     EditText edtxt = (EditText)findViewById(R.id.editText1); 
     // if I don't add the following the app crashes (obviously): 
     edtxt.setText("0"); 
     edtxt.setOnFocusChangeListener(new View.OnFocusChangeListener() { 

      public void onFocusChange(View v, boolean hasFocus) { 
       // TODO Auto-generated method stub 
       update(); 
      } 
     }); 
    } 

    public void update() { 
     EditText edittxt = (EditText)findViewById(R.id.editText1); 
     Integer i = Integer.parseInt(edittxt.getText().toString()); 
     // If i is an empty value, app crashes so if I erase the zero 
     //on the phone and change focus, the app crashes 
    } 
} 

Tôi đã thử những điều sau đây trong bản cập nhật() phương pháp:

String str = edittxt.getText().toString(); 
if (str == "") { 
    edittxt.setText("0"); 
} 

Nhưng nó không hoạt động. Làm thế nào tôi có thể cho phép các edittext không bao giờ được emty, trở lại số không khi trống nhưng không phải khi một giá trị tồn tại. Tôi đã chắc chắn rằng edittext chỉ có thể cho phép các giá trị số.

Trả lời

5
if(str.equals("")){ 
    edittxt.setText("0"); 
} 

WarrenFaith là đúng. Tham khảo bài đăng này để tìm hiểu thêm về vấn đề này: Java String.equals versus ==

+1

Cảm ơn bạn rất nhiều! Điều này làm việc. – Anomaly

+0

Nếu bạn vấp ngã khi vấn đề này, bạn nên đọc về sự khác biệt giữa 'equals()' và '=='. @Christian: có lẽ một chút giải thích sẽ là tốt đẹp, vì vấn đề này cho thấy rằng những điều cơ bản là không rõ ràng cho OP :) – WarrenFaith

0

Tôi khuyên bạn nên xung quanh cuộc gọi parseInt với khối try/catch bắt lỗi NumberFormatException, có thể là lỗi đang bị ném (vì bạn không chỉ định, tôi có thể chỉ đoán), có vẻ như:

public void update() { 
    EditText edittxt = (EditText)findViewById(R.id.editText1); 
    Integer i; 
    try { 
     i = Integer.parseInt(edittxt.getText().toString()); 
     // do something with i 
    } catch (NumberFormatException e) { 
     // log and do something else like notify the user or set i to a default value 
    }  
} 
Các vấn đề liên quan