2015-04-22 79 views
2

我想在Android Studio中我的應用活動類之外的類中的可繪製文件夾中創建一個圖像數組。我可以使用getResources()方法,但只能在活動中使用。我想保持我的代碼清潔和組織,並在我的活動中創建數組可能會變得雜亂,如果我積累更多的圖像。有沒有類似的方法或從外部類訪問getResources()方法的方法?我想要做的是使用我的可繪製文件夾中的圖像生成隨機背景。由於我是一名新開發人員,並且可能會錯誤地解決此問題,所以我願意接受這些建議。如何在Android Studio中調用/使用活動類以外的文件?

回答

0

這是我如何解決我的問題:

我誤以爲我需要一個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是我在其他類中定義的自定義的方法,其拾取存儲在數組中的隨機圖像文件。

4

您不需要Activity本身就可以獲得您的ResourcesActivityContext延伸;它是Context,它可以讓你訪問你的資源。如果您只想獲得Resources的參考資料,您只需要一個Context的課程。

+0

好吧,這聽起來像我需要的東西。我如何讓課堂採用'Context'?例如,我的班級名稱是「BackgroundCatalogue」。而當我做什麼'上下文'我輸入?我認爲它看起來像這樣:'BackgroundCatalogue(Context context){...'。 – YoungCoconutCode

+0

正確,您需要將'Context'傳遞給'BackgroundCatalogue'的構造函數。 – Emmanuel

+0

當我嘗試這樣的:'公共類BackgroundCatalogue(上下文上下文){...'我得到一個錯誤,說''類'或'接口'預期'。當我在'Activity'中嘗試這樣做時:'public BackgroundCatalogue mBackgroundCatalogue = new BackgroundCatalogue(Context context);'它在第二個'context'中給我一個錯誤,說'無法解析符號'context''。 – YoungCoconutCode

0

我能夠通過導入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文件夾中。

+0

這個答案不正確。 – Emmanuel

+0

它適用於我 –

+0

我的意思是特別是「你將不得不有一個類擴展像視圖」 – Emmanuel

相關問題