2012-01-16 5 views
0

내 활동 중 하나에서 setBackgroundResource()을 사용하여 클릭 할 때 배경 리소스를 변경하는 ImageButton이 있습니다. 나는 그 활동에서 잘 작동하지만 그 활동을 떠나서 다시 돌아올 때 버튼은 XML에 설정된 기본 배경으로 다시 바뀌었다. 버튼을 다시 클릭 할 때까지 배경 리소스를 영구히 설정하는 방법이 있습니까?활동을 변경할 때 setBackgroundResource

답변

3

,

예를 들어 선언 변수 지금

public static int bgresource; 

IMG 버튼을 클릭

if(something) { 
bgresource = R.drawable.img1 
} else { 
bgresource = R.drawable.img2 
} 

mylayout.setBackgroundResource(bgresource); 

또한 활동의 ​​onResume()에서 다음을 수행하십시오.

mylayout.setBackgroundResource(bgresource); 
+0

layout.options를 넣을 때.setBackgroundResource (bgresource); img 버튼을 클릭하면 "기본 유형 int에서 setBackgroundResource (int)를 호출 할 수 없습니다."라는 오류 메시지가 나타납니다. 어떤 해결책? –

+0

무엇을 해야할지 모르겠 음 –

+0

"layout.options"란 무엇입니까? 여기에 몇 개의 코드를 붙여 넣을 수 있습니까? ?? –

0

SharedPreferences에서 배경으로 사용하는 이미지의 URL/id를 저장하고 활동이 생성 될 때마다 설정해야합니다. 그렇지 않으면 XML 파일에 지정된 배경이 다음에 활동이 작성 될 때 사용됩니다.

0

활동 onResume() 메서드를 덮어 써야합니다. 활동 또는 버튼을 상태 (누르거나 누르지 않음)로 유지하고 onResume() 방법에서이 상태를 확인하고 배경을 변경하십시오.

+0

제안했다. 그 아래에 가서 만들 수 있습니까? –

+0

@Zach : 예, onCreate 메소드 바로 다음에 호출됩니다. 활동이 일시 중지되면 (다른 활동이 foerground에 있지만 현재 활동을 중지하지 않을 때), 돌아올 때 onCreate는 호출되지 않지만 onResume은 리턴합니다. 액티비티 관련 API 문서 (액티비티 라이프 사이클 설명) (http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle 링크)를 살펴보십시오. –

1

SharedPreferences를 사용하십시오.

배경을 변경 :

getSharedPreferences("background", MODE_PRIVATE).edit().putString("background","background_nr_1").commit(); 

정도에

getSharedPreferences("background", MODE_PRIVATE).edit().putString("background","background_nr_2").commit(); 

. 이렇게하면 현재 배경을 sharedPreferences에 설명하는 문자열이 저장됩니다.

String back = getSharedPreferences("background", MODE_PRIVATE).getString("background"); 

이 당신을 얻을 것이다 "background_nr_x을"뒤에 다음에서 onCreate-방법에

당신은 넣을 필요가있다. 이제 배경을 선택할 수 있습니다

if (back.equals("background_nr_1") { // set the Background associated with nr_1 
else if (.... "nr_2") ... 

참고 :이 앱이 종료 된 경우에도, 현재의 선택 배경을 복원합니다. 당신은 정적 변수 나 된 SharedPreferences에 이미지 버튼의 값을 저장해야

0

는이 같은 트릭을 사용할 수 있습니다

//outside the onCreate: 
    boolean resourceIsSet = false; 

    //inside the onCreate: 
    if(!resourceIsset) { 
     setBackgroundResource(); 
     resourceIsset= true; 
    } 

또는 다른 같은 SharedPreferences을 사용할 수 있습니다 내가 이력서상의를 해본 적이있다