Mar*_*ars 12 android class object android-context
有没有办法从单独的类中使用getString方法?
我有一个存储在我的字符串xml中的字符串,我想在一个对象中使用该字符串...但该方法在该对象中甚至不可用...
有小费吗?
小智 12
getString()是一种方法Context¹.如果你需要在一个单独的类(不扩展Context)中,通常最好将它作为需要它的方法的单独参数.
例:
public void logString(Context c, int stringId) {
Log.d("TAG", c.getString(stringId));
}
Run Code Online (Sandbox Code Playgroud)
有一点很重要: 永远不要将上下文存储在单独的类中.
提供一个论点.否则,如果存储上下文的对象比上下文最初所属的对象(例如活动)长,则会泄漏内存并中断整个android生命周期.
¹ getString()也可以在Resources课堂上使用 - 您可以通过Context.getResources()
这里的解决方案是确保您的对象具有对应用程序上下文的引用
Class Swag{
private Context ctx;
public Swag(Context ctx){
this.ctx = ctx;
}
public void doSomething(){
String something = ctx.getResources().getString(R.string.somestring);
...
}
// or like this
public void makeUpperCase(Context appContext){
appContext.getResources().getString(R.string.super_string_swag_yolo);
}
}
Run Code Online (Sandbox Code Playgroud)
很明显,你必须在创建一个对象时或在调用方法时提供上下文
resouce文件:values/strings.xml
<resources>
<string name="app_name">App name</string>
<resources>
Run Code Online (Sandbox Code Playgroud)
java的
import android.content.res.Resources;
Resources.getSystem().getString(R.string.app_name);//result : App name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37447 次 |
| 最近记录: |