在Udacity教程(天气应用程序)的帮助下制作我的第一个Android应用程序。
对于设置活动,我有一个文本框,其中包含位置值。
例如,德克萨斯州。 但是当我将其更改为任何其他值时,它在应用程序中的反映方式并不相同。但是,该文本框中的值正在变化。
在应用的SettingActivity中,我有以下代码,
git merge temp_branch_001
但截至今天addPreferencesFromResource(R.xml.pref_general);
bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_location_key)));
已被弃用,所以我不确定如何在这方面继续进行。我该怎么改变它?
我的目标是更改位置文字中的值,当我继续使用mainActivity时,天气数据应反映更改位置的数据。
感谢。
编辑:
addPreferencesFromResource
以上是我更新值的代码。
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();
}
以上是来自settingActivity的代码。但正如我所说,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();
}
已被弃用。所以这部分代码并没有真正起作用。
答案 0 :(得分:0)
创建一个单独的类,如下所示,处理所有与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");