2012-06-07 32 views
11

Tôi có một edittext và một nút trong cách bố trí của tôi và trong mã của tôi Tôi đang thiết keyListener của edittext như là nullEdit Text chủ chốt nghe

editText.setKeyListener(null); 

vì vậy mà tôi không thể gõ vào edittext tôi. Bây giờ trên nút bấm của tôi, tôi sẽ có thể gõ vào ediitext của tôi. Làm thế nào tôi có thể làm điều đó. Đó là một vấn đề đơn giản, nhưng tôi không thể tìm ra giải pháp nào. Bất kì sự trợ giúp nào đều được đánh giá cao.

Trả lời

19

Tôi có thể trễ bây giờ nhưng, đây là cách tôi làm điều đó:

public class MyActivity extends Activity 
{ 
    private KeyListener listener; 
    private EditText editText; 

    public void onCreate(...) 
    { 
     editText = ... // Get EditText from somewhere 
     listener = editText.getKeyListener(); // Save the default KeyListener!!! 
     editText.setKeyListener(null); // Disable input 
    } 

    // When you click your button, restore the default KeyListener 
    public void buttonClickHandler(...) 
    { 
     editText.setKeyListener(listener); 
    } 
} 

Về cơ bản, đầu tiên bạn tiết kiệm số EditText mặc định KeyListener trước khi bạn gọi setKeyListener(null). Sau đó, khi bạn nhấp vào nút của mình, bạn gọi lại số setKeyListener, chuyển người nghe mặc định mà bạn đã lưu trước đó.

+0

Chỉ là những gì tôi muốn ... Đã không thử nó, nhưng nó có vẻ đầy hứa hẹn. – SKT

1

lỗi của nó trong android Xem tại đây Bugs.

Nhưng trong file xml bạn có thể làm it.Using android:editable="false"

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:editable="false" <<<<<<< 
</EditText> 
+0

Xin lỗi nếu chúng ta làm như vậy, chúng tôi vẫn sẽ có thể gõ vào EditText trong chế độ khuyết tật cũng có. Tôi không thể chấp nhận điều đó như là một câu trả lời mặc dù nó có thể cho người dùng cảm giác rằng anh ta không thể gõ vào edittext – SKT

+0

@ user1172936 thấy tôi cập nhật câu trả lời của tôi –

+0

Điều tôi muốn làm là chỉ thông qua mã. Bởi vì khi tôi chạm vào nút đó một lần nữa. Tôi muốn làm cho tài sản của edittext như trước đây (không thể gõ vào nó) Vì vậy, tôi không thể đi cho xml ... Nhưng tôi sẽ kiểm tra nếu có bất kỳ tài sản như có thể chỉnh sửa trong mã java ... Có nghĩa là trong khi nếu bạn tìm một câu trả lời xin hãy giúp tôi bằng cách đăng nó ... Thankyou – SKT

3

Bạn có thể sử dụng này:

// When you click your button, restore the default KeyListener 
public void buttonClickHandler(...) 
{ 
    editText.setKeyListener(new EditText(getApplicationContext()).getKeyListener()); 
} 
+0

Tôi nghĩ câu trả lời của Rainai chính xác hơn. Điều đó sẽ giữ cho keylistener ban đầu của phương pháp edittext – SKT

+0

i tray rainai, nhưng nó không hoạt động đối với tôi, Vì vậy, nhưng phương pháp này, bởi vì nó được làm việc. :) –

+0

Phương pháp của Rainai cũng không hiệu quả với tôi. Điều này làm việc mặc dù. – Rishabh876

Các vấn đề liên quan