重构设置活动

时间:2015-04-22 23:23:29

标签: java android

我在重构SettingsActivity.java时遇到了问题。

首先,我扩展了PreferenceActivity,但没有采用 addPreferencesFromResource(R.xml.pref_general)因为它标记了decaprecated以及findPreference(getString(R.string.pref_location_key)。我已经改为PreferenceFragment并且它采用了上述两种方法但现在无法解析getMenuInflater()。inflate(R。 menu.menu_settings,menu);

此外它显示:“无法解析符号pref_units_keys” bindPreferenceSummaryToValue(findPreference(的getString(R.string.pref_units_key)));

最后在ForecastFragment.java中,我无法正确使用此方法:

private String formatHighLows(double high, double low){
         // Data is fetched in Celsius by default.
         // If user prefers to see in Fahrenheit, convert the values here.
         // We do this rather than fetching in Fahrenheit so that the user can
         // change this option without us having to re-fetch the data once
         // we start storing the values in the database
         SharedPreferences sharedPrefs =
                 PreferenceManager.getDefaultSharedPreferences(getActivity());
         String unitType = sharedPrefs.getString(
                 getString(R.string.pref_units_key),
                 getString(R.string.pref_units_metric));

         if(unitType.equals(getString(R.string.pref_units_imperial))){
             high = (high * 1.8) + 32;
             low = (low * 1.8) + 32;
         }else if(!unitType.equals(R.string.pref_units_metric)){
             Log.d(LOG_TAG, "Unit type not found: " + unitType);
         }

我可能需要在string.xml文件中声明de units和metric ...

我该怎么办?

以下是整个代码的链接:http://pastebin.com/KJRbj6Sd#

1 个答案:

答案 0 :(得分:2)

您可能需要获取活动参考。

尝试在gem "rmagick", "2.13.3", :require => "RMagick"之前添加getActivity(),并在每个getMenuInflater()之前添加getResources()

getString()