2009-11-25 38 views
8

Tôi đang viết một ứng dụng máy tính đơn giản (sử dụng bố cục tuyệt đối với 3 hộp chỉnh sửa và một số nút), có hai hộp inputtext và hộp đầu ra.Di chuyển trọng tâm từ một hộp văn bản Chỉnh sửa sang một hộp văn bản Chỉnh sửa khác

input1 = (EditText) findViewById(R.id.input1); 
input2 = (EditText) findViewById(R.id.input2); 

tại một lần người dùng nhập vào một số numerics vào Input1 và ép '+', bây giờ tôi muốn chuyển trọng tâm từ Input1 để Input2. Làm thế nào tôi có thể làm điều đó?

Tôi đã thử đoạn code dưới đây vào phím nhấn của '+'

onClick(View arg0){ 
    operator.setText("+"); 

    //Move focus from input1 to input2 
    input1.clearFocus(); 
    input2.setNextFocusDownId(input2.getId()); 
} 

nhưng điều này không làm việc .. bạn có thể xin vui lòng giúp tôi về vấn đề này?

+2

tốt, tôi đã tìm thấy câu trả lời, chúng tôi chỉ cần gọi input2.requestfocus(); để thay đổi foucus. – Vamsi

+0

Nếu bạn cần sử dụng điều này trong TextWatcher, và bạn cần phải khái quát hóa nó, có nghĩa là bạn không sử dụng đối tượng cụ thể để gọi requestFocus(); Bạn có câu trả lời cho điều đó không? – antonio081014

Trả lời

24

Vâng, tôi đã tìm thấy câu trả lời: chúng tôi chỉ cần gọi input2.requestFocus(); để thay đổi tiêu điểm.

0

[Bằng cách này, bạn muốn tránh sử dụng AbsoluteLayout -. Nó bị phản đối, và có thể bị gỡ bỏ]

Thay vì sử dụng onClick, bạn muốn hành động xảy ra trong phương pháp onKeyDown của KeyListener.

Xem: setKeyListener

Sau đó, bạn có thể kiểm tra trọng điểm 's KeyEvent với

KeyEvent.getAction() == KeyEvent.KEYCODE_PLUS 
2

Hãy thử điều này:

input1.setNextFocusDownId(input2.getId());

bạn đang sử dụng Input2, và tôi đoán rằng bạn muốn đi từ input1 đến input2.

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