繁体   English   中英

您如何从Android Studio中的活动类外部调用/使用文件?

[英]How do you call on/use files from outside the activity class in Android Studio?

我想在Android Studio中的我的应用活动类之外的类中,从可绘制文件夹中创建图像数组。 我只能在活动中使用getResources()方法。 我想保持代码的整洁有序,如果我积累了更多的图像,在我的活动中创建一个数组可能会变得混乱。 是否有类似的方法或从外部类访问该getResources()方法的方法? 我正在尝试使用可绘制文件夹中的图像生成随机背景。 我是新开发人员,所以我愿意接受建议,并且可能会错误地解决此问题。

您不需要Activity本身就可以拥有您的Resources ActivityContext延伸; 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM