2011-11-12 34 views
23

Trong lớp java của tôi, tôi muốn sử dụng tài nguyên chuỗi từ strings.xml.android cách sử dụng tài nguyên chuỗi trong lớp java

cho rằng tôi phải sử dụng như dưới đây,

getString(R.string.address) 

nếu lớp học của tôi là một hoạt động sau đó lấy nó. Nhưng lớp của tôi là một lớp java đơn giản, làm thế nào tôi có thể sử dụng ở đó?

Có thể không? Cảm ơn bạn

+0

Nếu dự án của bạn là một dự án Android. Chắc chắn bạn có thể sử dụng nó.Have bạn đã thử nó? cố gắng sử dụng nó sau đó cho chúng tôi biết. –

+4

Tôi tò mò về logic của bạn khi bạn chấp nhận câu trả lời bạn đã làm. –

+0

+1 (12 lần nữa) – MKJParekh

Trả lời

30

Một lớp học không có một bối cảnh và sử dụng một nguồn tài nguyên chuỗi một bối cảnh là cần thiết. Vì vậy, chỉ cần gọi lớp từ một hoạt động và đưa ra một tham số context và bên trong hàm tạo lớp của bạn chỉ cần sử dụng ngữ cảnh đó để lấy tài nguyên chuỗi.

Trong lớp tùy chỉnh của bạn, bạn cần phải nhập không gian tên R cho dự án để lấy Id tài nguyên.

import com.myrandomapp.R; 

Sau đó, để có được chuỗi thực tế

context.getString(R.string.COOL_STRING) 
+13

Câu trả lời này chưa hoàn thành - Để hoàn thành cho những người vẫn còn thắc mắc, bạn cần phải nhập không gian tên R cho dự án để lấy Id tài nguyên. ví dụ) nhập com.myappdomain.R (SỬ DỤNG NAMESPACE CỦA BẠN TẠI ĐÂY) Sau đó, để nhận được chuỗi thực tế context.getString (R.string.SOME_STRING) –

+1

@AndroidAddict +1 cho bạn, bạn giúp tôi tránh đau đầu! – Mirko

+0

@AndroidAddict +1. Bạn nên chỉnh sửa câu trả lời – Br0thazS0ul

16

Bạn có thể chuyển ngữ cảnh của lớp Hoạt động cho lớp java và truy cập tài nguyên.

Từ Hoạt động lớp của bạn

Helper helper = new Helper(this); 

lớp Java của bạn

public class Helper { 

    Helper(Context c){ 
     c.getString(R.string.address); 
    } 
} 
8

Bạn có thể tạo một tĩnh Application Context trong tùy chỉnh của bạn Application lớp

public class App extends Application{ 

    private static Context mContext; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mContext = getApplicationContext(); 
    } 

    public static Context getContext(){ 
     return mContext; 
    } 
} 

Sau đó, bạn chỉ cần gọi App.getContext().getResources() để có được bất kỳ giá trị tài nguyên .

Chỉ cần nhớ rằng điều này ContextApplication loại, vì vậy có những điều mà điều này Context là không tốt để sử dụng. Đọc this để biết thêm thông tin.

0

Bạn có thể thực hiện nếu bạn thêm dòng này:

// this is the object itself, and idString is the ID String bound to the literal. 
this.getString(R.string.idString) 

Tôi hy vọng nhận xét này sẽ giúp bạn!

Brs.

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