[英]How do you pass values from an activity to a class in Android Studio?
[英]How do you call on/use files from outside the activity class in Android Studio?
我想在Android Studio中的我的应用活动类之外的类中,从可绘制文件夹中创建图像数组。 我只能在活动中使用getResources()方法。 我想保持代码的整洁有序,如果我积累了更多的图像,在我的活动中创建一个数组可能会变得混乱。 是否有类似的方法或从外部类访问该getResources()方法的方法? 我正在尝试使用可绘制文件夹中的图像生成随机背景。 我是新开发人员,所以我愿意接受建议,并且可能会错误地解决此问题。
您不需要Activity
本身就可以拥有您的Resources
。 Activity
从Context
延伸; Context
使您可以访问资源。 您只需要一个带Context
的类(如果您只想获取您的Resources
的引用)。
我可以通过导入android.content.res.Resources;
来做到这一点android.content.res.Resources;
然后像这样访问图像:
Resources res = getResources();
Drawable image = res.getDrawable(R.drawable.imageName);
在外面的课上。 您的类应扩展诸如View
以访问MainActivity的上下文。 例:
public class MyClass extends View{
Resources res = getResources();
Drawable image = res.getDrawable(R.drawable.imageName);
public MyClass(Context context) {
super(context);
}
}
R.drawable
指向图像所在的文件夹。只需将其更改为R.folderName即可满足您的需求。 该文件夹必须位于项目的res文件夹中。
这是我解决问题的方式:
我误以为我需要类似getResources()
的方法来将图像文件存储在数组中。
相反,我发现您可以像这样简单地存储文件:
public class BackgroundCatalogue {
public int[] mBackgroundCatalogue = {
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
R.drawable.image4
};
}
我在Activity
使用getResources
遇到了问题,因为我希望我的应用程序可以在API 14和更高版本上运行。 解决方法是使用ResourcesCompat
,如下所示:
Drawable drawable = ResourcesCompat.getDrawable(getResources(), mBackgroundCatalogue.getBackground(), null);
backgroundImageView.setImageDrawable(drawable);
getBackground
是我在其他类中定义的自定义方法,该方法选择存储在数组中的随机图像文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.