gpt4 book ai didi

android - 何时以及为什么应该使用 getResources()?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:49:23 27 4
gpt4 key购买 nike

我刚刚开始使用 Android 开发并开始尝试。

documentation for getResources()表示它将[r]为您的应用程序包返回一个 Resources 实例。

在代码示例中,我看到它用于访问 res 中的资源,但似乎您可以直接访问它们。

例如从 res/values/strings.xml 中检索 my_string:

<!-- 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() 来访问资源? 似乎没有必要,或者是隐式调用,还是必须调用它来访问某些其他类型的资源或以其他方式访问资源?

最佳答案

资源有许多我们可能需要的辅助方法。

R.id、R.drawable 都返回由 android 在构建期间分配的动态 int。假设我们有一个要求,我们需要根据其名称访问国家标志图像。

如果我们的图像名称为 us.png 并且我们的值为“us”。两种处理方法是

if(countryName.equals("us")){
imageview.setImageRsource(R.drawable.us);
}

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);

资源实例也可以传递给其他类文件来访问资源。这些是您可以使用它的一些场景。

关于android - 何时以及为什么应该使用 getResources()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com