2012-04-27 68 views
25

Trong ứng dụng của tôi, tôi có trang chỉnh sửa chi tiết người dùng và tôi muốn hiển thị tên hiện tại, địa chỉ email, v.v. trong trường editText tương ứng và sau đó người dùng chỉ có thể xóa và nhập mới họ muốn.Android - giá trị mặc định trong editText

Có cách nào để thực hiện việc này không? Cảm ơn bạn đã giúp đỡ

+2

Trang web này là dành cho bạn http://developer.android.com/index.html – MKJParekh

Trả lời

28

Bạn có thể sử dụng EditText.setText(...) để đặt văn bản hiện tại của trường EditText.

Ví dụ:

yourEditText.setText(currentUserName); 
+0

Điều này làm hỏng ứng dụng của tôi.:( – Rishav

33

Có tính năng hint? Bạn có thể sử dụng setHint() để đặt hoặc đặt nó bằng XML (mặc dù bạn có thể không muốn điều đó, vì XML không 'biết' tên/địa chỉ người dùng của bạn :))

+2

Cảm ơn đã gợi ý;) Đây là một cái gì đó để tạo gợi ý hơi khác so với văn bản thông thường: \t \t title.setHint (Html.fromHtml ("" + DEFAULT_TITLE + "")); – MikeL

+0

để đặt gợi ý trong java -> 'inputPhoneNumber.setHint (R.string.examplePhoneNumber);' (cảm ơn bạn Nanne) – tmr

16

Từ xml:

android:text="yourtext" 
+1

Điều này không hoạt động với TextView (tôi đã thử với android api 4.0) – csharpfolk

2

Trước tiên, bạn cần phải tải các chi tiết người dùng bằng cách nào đó

Sau đó, bạn cần phải tìm EditText của bạn nếu bạn không có it-

EditText et = (EditText)findViewById(R.id.youredittext);

sau khi bạn đã tìm thấy EditText, hãy gọi

et.setText(theUserName); 
0

Bạn có thể làm điều đó theo cách này

private EditText nameEdit; 
private EditText emailEdit; 
private String nameDefaultValue = "Your Name"; 
private String emailDefaultValue = "[email protected]"; 

và bên trong phương pháp onCreate

nameEdit = (EditText) findViewById(R.id.name); 
    nameEdit.setText(nameDefaultValue); 
    nameEdit.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (nameEdit.getText().toString().equals(nameDefaultValue)){ 
       nameEdit.setText(""); 
      } 
      return false; 
     } 
    }); 

    nameEdit.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) {    
      if(!hasFocus && TextUtils.isEmpty(nameEdit.getText().toString())){ 
       nameEdit.setText(nameDefaultValue); 
      } else if (hasFocus && nameEdit.getText().toString().equals(nameDefaultValue)){ 
       nameEdit.setText(""); 
      } 
     } 
    });  

    emailEdit = (EditText)findViewById(R.id.email); 
    emailEdit.setText(emailDefaultValue); 
    emailEdit.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) {    
      if(!hasFocus && TextUtils.isEmpty(emailEdit.getText().toString())){ 
       emailEdit.setText(emailDefaultValue); 
      } else if (hasFocus && emailEdit.getText().toString().equals(emailDefaultValue)){ 
       emailEdit.setText(""); 
      } 
     } 
    }); 
+0

Tôi nghĩ bạn không phải thêm ontouchlistener, nó có thể làm việc chỉ với setonfocuschangelistener cho cả hai trường. – MikeL

11

Bạn có thể sử dụng văn bản thuộc tính trong tệp xml của bạn cho các trường Edittext cụ thể. Ví dụ:

<EditText 
    android:id="@+id/ET_User" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="yourusername"/> 

như thế này tất cả các lĩnh vực EditText chứa văn bản bất cứ điều gì mà bạn muốn, nếu người dùng muốn thay đổi lĩnh vực EditText Đặc biệt, ông loại bỏ văn bản cũ hơn và nhập nội dung mới của mình.

Trong Một cách khác chỉ bạn nhận được trường trường Edittext id trong lớp hoạt động và đặt văn bản thành lớp đó.

Một cách khác = lập trình

Ví dụ:

EditText username=(EditText)findViewById(R.id.ET_User); 

username.setText("jack"); 
Các vấn đề liên quan