【发布时间】:2012-03-15 12:19:27
【问题描述】:
所以基本上我有一个 PreferenceActivity,用于通过扩展 AsyncTask 的私有类调用 Web 服务。每当首选项更改时,我都会有一个“巨大的”“切换案例”来确定哪个首选项已更改,然后相应地进行调用。
现在我有两个问题:
- 这似乎是一种“愚蠢”的方式来处理我的问题。您对我应该怎么做有什么建议吗?
- 我刚刚创建了另一组包含 N 个 CheckboxPreferences 的首选项。在调用类 JoinQueueTask().execute(String queue_key) (JoinQueue extends AsyncTask) 方面,我该如何“处理”这些问题?
相关代码sn-p:
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);
}
}
【问题讨论】:
标签: android preferenceactivity