我想从类中的函数返回位图,大多数时候,我会返回生成的图像,效果很好,但是在某些情况下,我想从资源中返回文件。
This answer至BitmapFactory.decodeResource and drawable* folders问题告诉我使用
Resources res = getContext().getResources();
int id = R.drawable.image;
Bitmap b = BitmapFactory.decodeResource(res, id);
我翻译成的
val res = getContext().getResources()
val errorbitmap:Bitmap = BitmapFactory.decodeResource( res, R.drawable.pm5544)
但是当然会有编译错误:
未解决的参考:getContext
哪个使我们想到了我的问题:
getContext()
? 或解决实际问题: 答案 0 :(得分:1)
如果您从MainActivity
运行以下代码,则可以访问resources
val res = resources
val id = R.drawable.image
val b = BitmapFactory.decodeResource(res, id)
要在对象中使用它,您必须将资源作为参数传递,或者如果只需要一个图像,则将其作为参数传递。
答案 1 :(得分:1)
我需要在哪个对象上调用getContext()?
使用Application
上下文。您可以在应用程序中的任何位置使用应用程序上下文。
创建自己的Application
类
public class AppApplication extends Application {
private static AppApplication instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static AppApplication getInstance() {
return instance;
}
}
以这种方式访问应用程序上下文:
Context appContext = AppApplication.getInstance().getApplicationContext();
现在appContext
可以访问您的资源
科林版本:
class AppApplication :Application(){
companion object{
private lateinit var instance:AppApplication
fun getInstance():AppApplication{
return instance
}
}
override fun onCreate() {
super.onCreate()
instance = this
}
}
访问Application
上下文
val applicationContext = AppApplication.getInstance().applicationContext
确保在AppApplication
中添加自定义Manifest
类
<application
android:name=".AppApplication"
............
</application>
使用应用程序上下文是安全的,因为没有Activity
或Fragment
生命周期问题