Lấy dữ liệu từ editText trong android

Chào mọi người, hôm nay mình có vấn đề mà mình vẫn chưa tìm ra cách nên mong mọi người giúp đỡ. Trong hình thì A là 1 edittext, B và C là button, từ 1 đến 3 là edittext. Mình muốn người dùng nhập vào ô A 1 con số và ấn B thì nó sẽ hiển thị ra đúng số edittext ấy, ở đây là 3 cái, còn lại thì ẩn đi. Mình đã làm được phần này khi dùng setvisibility nhưng còn việc là lấy các giá trị người dùng nhập vào 3 cái edittext, khi ấn nút C thì nó sẽ hiển thị ra thì chưa được… Mình có tạo 1 cái arrayList và vòng lặp để lặp qua mảng các edittext lấy các giá trị vào arraylist nhưng bị lỗi ,
image

image

Lỗi gì thì lại ko nói.

2 Likes

câu hỏi của bạn còn thiếu nhiều dữ kiện quá, như là bị lỗi gì, thậm chí trong code doDaidsX đại diện cho cái gì bạn cũng ko nói rõ. Cái này bạn đang làm thì bạn biết, chứ người ngoài nhìn vào sao mà biết bạn đang làm cái gì.

2 Likes

cảm ơn các bác đã nhắc nhở, cái doDai là cái editText A để hiện số lượng edittext, còn dsX là mảng các editText mà mình đã đưa vào, listX là arrayList để lưu trữ giá trị của các editText, ktra là cái Textview mình để kiểm tra xem có in ra được phần tử không. Lỗi thì nó bị văng app khi mình ấn nút C ấy.

Đoán thử nhé! Đây là lỗi:

NumberFormatException: For input string: ""

Bạn chuyển chuỗi rỗng sang dạng số.

Nếu mảng dsX chứa cả 3 EditText, tức gồm cả cái bị ẩn, thì mình đoán trúng phóc.

Chi tiết hơn thì bạn vui lòng chép mã (không phải là chụp hình) 2 sự kiện nhấn nút B và C cho tụi mình.

2 Likes

Cảm ơn bác, mình tạo lúc đầu 1 mảng dsX lưu hết các editText, kể cả cái bị ẩn. Nút B mình xử lý onclick là lấy giá trị ở editText A để setvisibility lên các editText của dsX để hiển thị ra số lượng edittext đã nhập ở A. Có thể do 2 nút khác nhau nên khi xử lý nút C nó không nhận các edittext đã được hiển thị ở nút B. Mình định tạo thêm 1 arrayList để lưu trữ các editText đã được hiện khi xử lý ở nút B rồi dùng mảng này để lấy giá trị ở nút C được không bác ?

Không cần vậy, bạn chỉ cần kiểm tra xem nó đang hiện hay ẩn là được mà. Khi nào hiện thì mới lấy giá trị và chuyển sang số.
Khuyên bạn: nên dùng try-catch nhiều hơn.
Integer.parseInt() có khả năng quăng ngoại lệ cực cao.

3 Likes

Ok, cảm ơn bác nhiều, thêm nữa mình quên setText chỉ làm việc với string mầ mình lại đưa vào giá trị integer nên cũng gây thêm lỗi.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?