2011-11-12 27 views
23

在我的java类中,我想使用strings.xml中的字符串资源。android如何在java类中使用字符串资源

的,我必须使用像下面,

getString(R.string.address) 

如果我的类是一个活动,则其服用。但是我的类是一个简单的java类,我该如何使用它?

可能吗? 谢谢

+0

如果您的项目是一个Android项目。无限期地,您可以使用它。试过了吗?尝试使用它,然后告诉我们。 –

+4

当你接受你所做的答案时,我很好奇你的逻辑是什么。 –

+0

+1(还剩12个) – MKJParekh

回答

30

类没有上下文,并使用字符串资源需要一个背景。所以,只需从一个活动中调用该类并给出参数context并在您的类构造函数中使用该上下文来获取字符串资源。

在您的自定义类中,您需要导入项目的R名称空间以获取资源ID。

import com.myrandomapp.R; 

然后获得实际的字符串

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

此答案不完整 - 要为仍然有问题的人完成,您需要导入项目的R名称空间以获取资源ID。例如)import com.myappdomain.R(在这里使用你的名词空间) 然后获取实际的字符串 context.getString(R.string.SOME_STRING) –

+1

@AndroidAddict +1对你来说,你让我头疼! – Mirko

+0

@AndroidAddict +1。你应该编辑答案 – Br0thazS0ul

16

您可以将Activity类的上下文传递给java类并访问资源。

从你的活动课

Helper helper = new Helper(this); 

你的Java类

public class Helper { 

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

您可以创建自定义静态Application ContextApplication

public class App extends Application{ 

    private static Context mContext; 

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

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

然后你只需要调用App.getContext().getResources()得到任何资源值。

请记住,这个ContextApplication类型,所以有这个Context不好用的东西。阅读this了解更多信息。

0

,如果你加入这一行你可以做:

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

我希望此评论可以帮助你!

Brs。

相关问题