마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

싱글톤? 패턴을 적용해보려고 합니다.

0 추천

현재 이런식으로 코드가 짜여져 있습니다.

 

   public static HashMap getMap() {
                
                map.put("Special", R.drawable.special);
                map.put("봄", R.drawable.spring);
                map.put("여름", R.drawable.summer);
                map.put("가을", R.drawable.fall);
                map.put("겨울", R.drawable.winter);
        
                map.put("09", R.drawable.year09);
                map.put("10", R.drawable.year10);
                map.put("11", R.drawable.year11);
                map.put("12", R.drawable.year);
                map.put("13", R.drawable.year13);
                map.put("14", R.drawable.year14);
                map.put("15", R.drawable.year15);
                
                
                return map;
        }
        
public static BitmapDrawable getSeasonBitmapDrawble(Context context, String str_season){
                
                BitmapDrawable img_season = null;
                img_season = (BitmapDrawable)context.getResources().getDrawable(getMap().get(str_season));
                
        return img_season; 
        }

 

 

위 코드를 보면

 

getSeasonBitmapDrawble() 이 함수에서

img_season = (BitmapDrawable)context.getResources().getDrawable(getMap().get(str_season));

 

저 부분에서 getMap을 호출하게 되는데요

 

문제는 저게 호출될때마다 getMap이 호출되니 map에 값을 넣는 동작이 호출 될 때마다 동작한다는 것입니다.

 

그래서 저는 map에 값넣는 동작은 최초1번만 실행하고 그 이후로는 갖다 쓰기만하게 하고 싶은데요

이걸 싱글톤 패턴이라고 하더라구요

 

그래서 적용해보려는데 계속 실패를 합니다.

 

어떻게 구현하여야 하나요?

private static HashMap<String, Integer> map = new HashMap<String, Integer>();
 
static HashMap<String, Integer> getMap() {
...
}
 
이렇게 prviate static 선언해주고
 
img_season = (BitmapDrawable)context.getResources().getDrawable(이부분을 어떻게 해줘야 하는건가죠?.get(str_season));
브루스웨인 (8,580 포인트) 님이 2015년 6월 30일 질문

1개의 답변

0 추천
 
채택된 답변

대충 이 정도면 되지 않으려나요.

 

    private static HashMap<String, Integer> map;
 
    public static HashMap getMap() {
        if (map == null) {
            map = new HashMap<String, Integer>()
 
            map.put("Special", R.drawable.special);
            map.put("봄", R.drawable.spring);
            map.put("여름", R.drawable.summer);
            map.put("가을", R.drawable.fall);
            map.put("겨울", R.drawable.winter);
         
            map.put("09", R.drawable.year09);
            map.put("10", R.drawable.year10);
            map.put("11", R.drawable.year11);
            map.put("12", R.drawable.year);
            map.put("13", R.drawable.year13);
            map.put("14", R.drawable.year14);
            map.put("15", R.drawable.year15);
        }
                 
        return map;
    }
 
호출하는 쪽은 지금 그냥 그대로 냅두면 될 것 같은데요. 컴파일해본 게 아니고, 여기서 직접 친거라 에러가 날지도 모릅니다 ^^
cc1232 (35,280 포인트) 님이 2015년 6월 30일 답변
브루스웨인님이 2015년 6월 30일 채택됨
...