2012-12-12 27 views
5

Tôi đang viết một ứng dụng Android, nơi tôi có nhiều biến mà tôi cần truy cập trong một hoạt động cụ thể (về cơ bản, là "mô hình dữ liệu" cho một loại trò chơi nhỏ). Hiện tại, tôi đang lưu trữ tất cả chúng trong một lớp "container" rất lớn để tôi có thể dễ dàng tham khảo chúng mà không gây ô nhiễm lớp hoạt động của tôi. Ví dụ:Có điều gì tương tự với hệ thống tài nguyên của Android trên quy mô nhỏ hơn không?

public class Model 
{ 
    private int a; 
    private String b; 
    private float c; 

    ... 

    public int getA() 
    { 
     return a; 
    } 

    public void setA(int a) 
    { 
     this.a = a; 
    } 

    public String getB() 
    { 
     return b; 
    } 

    public void setB(String b) 
    { 
     this.b = b; 
    } 

    public float getC() 
    { 
     return c; 
    } 

    public void setC(float c) 
    { 
     this.c = c; 
    } 

    ... 
} 

Như bạn có thể thấy, các loại khác nhau và tất cả đều có getters và setters. Nhưng nó nhận được lưu trữ cồng kềnh như thế này. Tôi cũng muốn lặp qua các nhóm biến, nhưng với định dạng getter/setter phẳng này tôi không thể thực sự làm điều đó.

Tôi biết hệ thống tài nguyên của Android, nhưng dường như không phù hợp với điều này, vì các biến không có nghĩa là toàn bộ ứng dụng/toàn cầu. Chúng chỉ tồn tại trong cuộc sống của hoạt động cụ thể này và được tạo theo chương trình mỗi khi hoạt động bắt đầu.

Tôi đã nghĩ đến việc đưa tất cả chúng vào cấu trúc Map<String, Object>, nơi tôi có thể tham chiếu từng biến thông qua khóa Chuỗi. Điều này sẽ loại bỏ sự cần thiết phải có một lớp container với rất nhiều getters và setters, vì tôi chỉ có thể gọi put hoặc get trên bản đồ. Nhưng sau đó bất cứ khi nào tôi muốn nhận được một giá trị từ bản đồ, tôi sẽ phải đúc theo kiểu mong đợi. Tôi không thích âm thanh đó.

Bất kỳ ai có giải pháp tốt hơn? Có cái gì đó tương tự như hệ thống tài nguyên của Android có thể được sử dụng trên quy mô nhỏ hơn, tạm thời hơn không?

+0

Nếu bạn đặt lớp và biến tĩnh, bạn có thể truy cập các biến ở mọi nơi. Không chắc chắn nếu đó là những gì bạn có ý nghĩa. – Tooroop

Trả lời

0

Tôi không chắc chắn lý do tại sao, nếu chúng có nghĩa là để mô hình trạng thái của Hoạt động, bạn không chỉ xác định các lớp thực tế cho từng đối tượng mô hình. Đó sẽ là gợi ý của tôi. Bạn đang dùng một cách tiếp cận thủ tục rất giống C ở đây với việc chỉ bán chúng trong một lớp duy nhất với nhau. Ngoài ra, kể từ khi mã của bạn không hiển thị getters tĩnh và setters, bạn phải tạo và truy cập vào lớp container bằng cách nào đó, không? Dựa trên đoạn trích nhỏ này và không có nhiều ngữ cảnh, khó có thể cung cấp cho bạn câu trả lời hay hơn.

+0

Xác định các lớp học cho từng đối tượng mô hình? Tôi không chắc ý bạn là gì ... –

0

Bạn có thể xác định tệp tài nguyên xml tùy chỉnh cho từng hoạt động. Các tệp này được lưu trữ trong thư mục/xml ở cùng cấp với thư mục/src. Sử dụng lớp Tài nguyên để tải chúng.

Hoặc xem xét vấn đề này: Dynamic Resource Loading Android

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