繁体   English   中英

在设置活动中更改文本后,该文本未得到反映

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM