Android:你如何从字符串访问字符串数组.xml在自定义类中



我想在不扩展自定义类中的活动的情况下获取我的字符串数组。有没有办法做到这一点?

如果不扩展活动,String[] foo_array = getResources().getStringArray(R.array.foo_array);将无法工作,因此我需要解决方法。

将上下文传递给自定义类的构造函数并使用相同的

new CustomClass(ActivityName.this);

然后

Context mContext;
public CustomClass(Context context)
{
    mContext = context;
}

使用上下文

String[] foo_array = mContext.getResources().getStringArray(R.array.foo_array);

还要记住

不要保留对上下文活动的长生存引用(对活动的引用应与活动本身具有相同的生命周期)

http://android-developers.blogspot.in/2009/01/avoiding-memory-leaks.html

还要检查这个

android getResources() from non-Activity class

编辑:

更改此内容

public class CustomClass(Context context) 
{
}

public class CustomClass
{
   Context mContext;
   public CustomClass(Context context) // constructor 
   {
    mContext = context;
   }
}

试试这个,

Context context=getApplicationContext();
String[] foo_array = context.getResources().getStringArray(R.array.foo_array);

并且,不要使用活动上下文,因为它与活动生命周期相关联。

更新

getApplicationContext()来自上下文类。这意味着任何扩展上下文都有此方法。这也意味着您将能够从service或其他资源使用它。

但是,如果自定义类不扩展活动/上下文,则必须将上下文作为参数传递才能使用getApplicationContext()

如果您像这样声明您的活动

myMethod(Activity activity) //this is bad

芽,如果它像下面,

myMethod(Context context) //this is ok

但从上面的声明不要通过ActivityService Context,因为它们有自己的生命周期。 相反,您将使用getApplicationContext()

您需要将活动上下文传递给自定义类。

private Context context;
public CustomClass(Context context)
{
 this.context=context;
}

如果您使用数字选择器并从sring xml传递字符串,则使用此

np_Basic_Hight.setMinValue(0);

    np_Basic_Hight.setMaxValue(71);
    np_Basic_Hight.setDisplayedValues(getContext().getResources().getStringArray(R.array.hieght));

最新更新