我刚刚开始使用Android开发和玩游戏。
documentation for getResources()表示会[r]eturn a Resources instance for your application's package.
在代码示例中,我已经看到这用于访问res
中的资源,但似乎您可以直接访问它们。
例如,从my_string
检索res/values/strings.xml
:
<!-- strings.xml -->
...
<string name="my_string">This is my string</string>
...
您可以使用这两种方式
第一种方式:
// MyActivity.java //
...
// No need to use getResources()
String msg = getString(R.string.my_string);
...
第二种方式:
// MyActivity.java //
...
// What is the point of getResources() here?
// It works but it requires "import android.content.res.Resources;" and is longer
Resources the_resources = this.getResources();
String msg = the_resources.getString(R.string.my_string);
...
那么,您何时需要使用getResources()
来访问资源?似乎没有必要,或者是隐式调用,还是必须调用它来访问某些其他类型的资源或以其他方式访问资源?
答案 0 :(得分:3)
资源有许多我们可能需要的辅助方法。
R.id,R.drawable在构建时间内由android分配的所有返回动态int。假设我们需要根据其名称访问coutries标志图像。
如果我们将图片名称设为us.png,则我们拥有的值为“我们”。处理它的两种方法是
if(countryName.equals("us")){
imageview.setImageRsource(R.drawable.us);
}
OR
Resources res = getResources();
int imageId = res.getIdentifier(getIdentifier(countryName, "drawable"
,"com.myapp");
imageview.setImageRsource(imageId);
第二种方法将是最好的方法,特别是当有超过50个国家或者你最终会得到一个非常长的if-else或switch语句时。
当您需要访问Assets文件夹中的内容时,也会使用资源对象
res.getAssets().open(YOUR FILE);
资源实例也可以传递给其他类文件来访问资源。这些是您可以使用它的一些场景。
答案 1 :(得分:2)
它在非活动类中很有用。
您将上下文传递给该类,然后您可以访问该资源。
答案 2 :(得分:-1)
继承Activity的类也会继承getResources()。如果你有一个活动(或其衍生物)的类,你可以访问这个方法(通过继承,在面向对象编程中真正的真正的基本概念。如果你有一个类< em>不是这种类的衍生物,您需要授予对这种上下文的访问权限以访问所述资源。
如果您需要有关面向对象编程的继承,多态等的更多信息,我建议您参考涉及此类问题的各种网站或学校课程。