기본적으로 AsyncTask를 확장하는 개인 클래스를 통해 웹 서비스를 호출하는 데 사용하는 PreferenceActivity가 있습니다. 환경 설정이 변경 될 때마다 나는 어떤 환경 설정이 변경되었는지를 결정하는 "거대한" "스위치 케이스"를 가지고 그에 따라 전화를합니다.PreferenceActivity : using onSharedPreferenceChanged()
- 이것은 "바보"방법처럼 보인다 내 문제를 해결하기 위해 :
지금 나는 두 가지 질문이 있습니다. 대신 내가해야 할 일에 대해 제안이 있습니까?
- 방금 N CheckboxPreferences로 구성된 또 다른 기본 설정을 만들었습니다. JoinQueueTask()를 호출하는 관점에서 이들을 "어떻게 처리해야합니까?"(JoinQueue extends AsyncTask) execute (String queue_key)?
관련 코드 : 당신이 될 것이다 큰 스위치/case 문을 당신의 최선의 방법을 사용하여 처리하지 않으려면
public void onSharedPreferenceChanged(SharedPreferences arg0, String key)
{
if(isFirstRun)
return;
// Call Forward Preferences
if(key.contentEquals("call_forward_always"))
{
cfInfo[0] = "1";
cfInfo[1] = arg0.getString(key, "ERROR");
new PushCallForwardInfoTask().execute(cfInfo);
ep1.setSummary("Viderestiller til " + cfInfo[1]);
}
else if(key.contentEquals("call_forward_busy"))
{
cfInfo[2] = "1";
cfInfo[3] = arg0.getString(key, "ERROR");
new PushCallForwardInfoTask().execute(cfInfo);
ep2.setSummary("Viderestiller til " + cfInfo[3]);
}
else if(key.contentEquals("call_forward_noresponse"))
{
cfInfo[4] = "1";
cfInfo[5] = arg0.getString(key, "ERROR");
new PushCallForwardInfoTask().execute(cfInfo);
ep3.setSummary("Viderestiller til " + cfInfo[5]);
}
else if(key.contentEquals("call_forward_timeout"))
{
cfInfo[6] = arg0.getString(key, "ERROR");
new PushCallForwardInfoTask().execute(cfInfo);
ep4.setSummary("Viderestiller efter " + cfInfo[6] + " sekunder");
}
// Show Number Preferences
else if(key.contentEquals("shownumber_list"))
{
String[] newnumber = {""};
newnumber[0] = arg0.getString(key, "ERROR");
new PushNumberTask().execute(newnumber);
lp.setSummary(arg0.getString(key, "ERROR"));
}
// Voicemail Preferences
else if(key.contentEquals("voicemail_checkbox"))
{
final Boolean[] vmStatus = { Boolean.FALSE };
vmStatus[0] = cp.isChecked();
new PushVoicemailStatus().execute(vmStatus);
}
}
좋아요. 현재 솔루션이 좋지 않은지 알고 있습니까? – CodePrimate
@litemode 음 ... 나는 그것이 나쁜 습관이라고 말하지 않을 것이다. 환경 설정은 일반적으로 문자열 (SDK가 JRE7로 이동하면 문자열을 전환 할 수 있음)이므로 안드로이드는이 상황을 처리하기 어렵게 만듭니다. 느슨하게 결합 된 코드를 유지하는 것이 좋습니다. 기본 설정 항목을 처리하는 것이 기본 설정 항목을 처리하는 것이 바로이 작업을 수행한다고 생각합니다. 그런 식으로 환경 설정을 추가하거나 제거하면 ... 한 곳에서만 발생합니다. 그러나 당신이하고있는 것이 필요하고 이용 가능한 유일한 방법, 당신이 편안하고 읽고 쉽게 유지할 수있는 상황이 있습니다. – jjNford