내 활동 중 하나에서 setBackgroundResource()
을 사용하여 클릭 할 때 배경 리소스를 변경하는 ImageButton
이 있습니다. 나는 그 활동에서 잘 작동하지만 그 활동을 떠나서 다시 돌아올 때 버튼은 XML에 설정된 기본 배경으로 다시 바뀌었다. 버튼을 다시 클릭 할 때까지 배경 리소스를 영구히 설정하는 방법이 있습니까?활동을 변경할 때 setBackgroundResource
답변
,
예를 들어 선언 변수 지금
public static int bgresource;
IMG 버튼을 클릭
if(something) {
bgresource = R.drawable.img1
} else {
bgresource = R.drawable.img2
}
mylayout.setBackgroundResource(bgresource);
또한 활동의 onResume()에서 다음을 수행하십시오.
mylayout.setBackgroundResource(bgresource);
SharedPreferences에서 배경으로 사용하는 이미지의 URL/id를 저장하고 활동이 생성 될 때마다 설정해야합니다. 그렇지 않으면 XML 파일에 지정된 배경이 다음에 활동이 작성 될 때 사용됩니다.
활동 onResume()
메서드를 덮어 써야합니다. 활동 또는 버튼을 상태 (누르거나 누르지 않음)로 유지하고 onResume()
방법에서이 상태를 확인하고 배경을 변경하십시오.
제안했다. 그 아래에 가서 만들 수 있습니까? –
@Zach : 예, onCreate 메소드 바로 다음에 호출됩니다. 활동이 일시 중지되면 (다른 활동이 foerground에 있지만 현재 활동을 중지하지 않을 때), 돌아올 때 onCreate는 호출되지 않지만 onResume은 리턴합니다. 액티비티 관련 API 문서 (액티비티 라이프 사이클 설명) (http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle 링크)를 살펴보십시오. –
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에 이미지 버튼의 값을 저장해야
는이 같은 트릭을 사용할 수 있습니다
//outside the onCreate:
boolean resourceIsSet = false;
//inside the onCreate:
if(!resourceIsset) {
setBackgroundResource();
resourceIsset= true;
}
또는 다른 같은 SharedPreferences을 사용할 수 있습니다 내가 이력서상의를 해본 적이있다
layout.options를 넣을 때.setBackgroundResource (bgresource); img 버튼을 클릭하면 "기본 유형 int에서 setBackgroundResource (int)를 호출 할 수 없습니다."라는 오류 메시지가 나타납니다. 어떤 해결책? –
무엇을 해야할지 모르겠 음 –
"layout.options"란 무엇입니까? 여기에 몇 개의 코드를 붙여 넣을 수 있습니까? ?? –