[英]After Changing text in setting activity,it is not getting reflected
我正在借助Udacity的教程(天气应用)制作我的第一个android应用。
为了设置活动,我有一个文本框,其中包含位置值。
例如说得克萨斯州。 但是,当将其更改为任何其他值时,它并没有在应用程序中反映出来。 虽然,该文本框中的值正在更改。
在应用程序的SettingActivity中,我有以下代码,
addPreferencesFromResource(R.xml.pref_general);
bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_location_key)));
但是从今天addPreferencesFromResource
,不赞成使用addPreferencesFromResource
,所以还不确定如何进行这方面的工作。 我要用什么改变它?
我的目标是更改“位置”文本中的值,当我进行mainActivity时,天气数据应反映更改后的位置的数据。
谢谢。
编辑:
public class MainActivityFragment extends Fragment {
private ArrayAdapter<String> mForecastAdapter;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
private void updateWeather()
{
FetchWeatherTask weatherTask = new FetchWeatherTask();
SharedPreferences prefs= PreferenceManager.getDefaultSharedPreferences(getActivity());
String location=prefs.getString(getString(R.string.pref_location_key),getString(R.string.pref_location_default));
weatherTask.execute(location);
}
@Override
public void onStart()
{
super.onStart();
updateWeather();
}
上面是我更新值的代码。
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_location_key)));
setupActionBar();
}
上面是来自settingActivity的代码。 但是正如我所说,不赞成使用addPreferencesFromResource
。 因此,这部分代码并没有真正起作用。
如下创建一个单独的类,以处理所有与prefs相关的操作,存储和还原...
public class MyPrefs {
Context context;
SharedPreferences systemPrefs;
SharedPreferences.Editor editor;
static MyPrefs prefs;
public static final String DEFAULT_LOCATION = "DEFAULT_LOCATION";
public static final String SOME_DEFAULT_LOCATION = "London";
public static MyPrefs getInstance(Context context){
if(prefs == null){
prefs = new MyPrefs(context);
}
return prefs;
}
private MyPrefs(Context context) {
this.context = context;
this.systemPrefs = context.getSharedPreferences(Constants.USER_PREFS, Activity.MODE_PRIVATE);
this.editor = systemPrefs.edit();
}
public String getDefaultLocation(){
return systemPrefs.getString(DEFAULT_LOCATION, SOME_DEFAULT_LOCATION);
}
public void setDefaultLocation(String newLocation){
editor.putString(DEFAULT_LOCATION, newLocation);
editor.commit();
}
public void clear() {
editor.clear();
editor.commit();
}
}
并在任何活动类中使用它...
MyPrefs myPrefs = MyPrefs.getInstance(this);
//To get the location stored in prefs
String locationFromPrefs = myPrefs.getDefaultLocation();
//To store the location in prefs
myPrefs.setDefaultLocation("New York");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.