2011-10-12 30 views
24

Tôi có chế độ xem tùy chỉnh và muốn truy cập vào Chuỗi có sẵn trong hoạt động của nó. Tôi đã nhìn thấy mã sử dụng getContext() trong lớp chế độ xem, nhưng không có phương pháp nào để truy cập Chuỗi đã được cung cấp cho hoạt động của nó thông qua mục đích. Làm thế nào để tạo chuỗi trong một hoạt động có sẵn cho chế độ xem tùy chỉnh của nó?Chế độ xem tùy chỉnh có thể truy cập hoạt động của nó như thế nào?

Trả lời

30

Phương pháp này getContext() trong lợi nhuận Xem lớp bối cảnh đã được truyền vào hàm tạo của nó. Thông thường đó là Hoạt động bạn muốn (Hoạt động mở rộng Ngữ cảnh). Vì vậy, điều này có thể phù hợp với bạn:

((Activity)getContext()).someMethod(...); 
+1

simao hoàn hảo, cảm ơn rất nhiều. – turtleboy

+9

Đó là giải pháp tốt cho các trường hợp Chế độ xem được tạo trực tiếp bởi Hoạt động. Đây không phải là luôn luôn như vậy. Nếu chế độ xem là chế độ xem của Hộp thoại hoặc PopupWindow thì việc chèn ngữ cảnh dưới dạng Hoạt động sẽ dẫn đến lỗi – EyalBellisha

+0

Như @EyalBellisha chỉ ra, điều này có thể không phải lúc nào cũng hoạt động. Trong trường hợp bối cảnh các widget tương thích được bao bọc, chẳng hạn như trường hợp khi mở rộng từ 'android.support.v *', 'getContext()' sẽ không thuộc loại Activity. Ví dụ, đối với AppCompatButton, nó thuộc kiểu TintContextWrapper và không thể truyền vào Activity. –

-5

Tôi là một noob đối với java và android vẫn còn, vì vậy điều này có thể không hoạt động, nhưng tôi chỉ đang cố gắng trợ giúp.

Bạn sẽ có thể vượt qua trong các thông số để intents/hoạt động sử dụng "putExtra" và "getExtra", ví dụ:

Trong hoạt động chính của bạn:

Intent EditDebtActivity = new Intent(getBaseContext(), EditDebt.class); 
     EditDebtActivity.putExtra(DbAdapter.KEY_ROWID,dRowID); 
     EditDebtActivity.putExtra(DbAdapter.KEY_DEBT, dName); 
     EditDebtActivity.putExtra(DbAdapter.KEY_STARTINGAMOUNT, dStartAmount); 
     EditDebtActivity.putExtra(DbAdapter.KEY_CURRENTAMOUNT, dCurrentAmount); 
     EditDebtActivity.putExtra(DbAdapter.KEY_DUEDATE, dDueDate); 
     EditDebtActivity.putExtra(DbAdapter.KEY_INTERESTRATE, dInterestRate); 
     EditDebtActivity.putExtra(DbAdapter.KEY_MINPAYMENT, dMinPayment); 
     startActivity(EditDebtActivity); 

Sau đó, trong "onCreate" trong chế độ xem mới của bạn, sử dụng như sau:

Bundle extras = getIntent().getExtras(); 
    dRowID = extras.getLong(DbAdapter.KEY_ROWID); 
    String rowidname = extras.getString(DbAdapter.KEY_DEBT); 
    currentamount = extras.getDouble(DbAdapter.KEY_CURRENTAMOUNT); 
    startingamount = extras.getDouble(DbAdapter.KEY_STARTINGAMOUNT); 
    duedate = extras.getInt(DbAdapter.KEY_DUEDATE); 

rõ ràng là tôi đã sử dụng mã của riêng mình tại đây, nhưng tôi chuyển thông tin hàng vào hoạt động mới khi người dùng nhấp vào nút.

Xem này SO liên kết để biết thêm về việc sử dụng putextra và getextra: Sending arrays with Intent.putExtra

Hope this helps, đó là đóng góp đầu tiên của tôi trở lại với cộng đồng :)

+0

R Xin chào những đóng góp đầu tiên của bạn :) tôi có một listview liệt kê tên tệp jpeg ở gốc. khi người dùng chọn, kích hoạt ý định với tên tệp. hoạt động truy xuất có thể lấy tên tệp nhưng chế độ xem là chế độ xem tùy chỉnh không thể truy cập tên tệp. Cảm ơn. – turtleboy

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