0

在首选项中,我想根据单位类型(英制或公制)更改首选项视图。在 create 方法上,我正在检查 measurement_unit首选项的最后一个值是什么,但始终在应用程序启动时返回指标。我还有一个OnSharedPreferenceChangeListener我正在根据用户条目更改视图的地方,这是有效的。调用 onCreate 时如何获取保存的首选项?

public class PrefMainActivity extends PreferenceActivity{
    String TAG="BlueGlucose";

  @Override
  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);  
        actionBar.setTitle(R.string.action_settings);

        this.init_view();

    }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {   
      switch (item.getItemId()) {
          case android.R.id.home:
              finish();
              return true;

          default:
              return super.onOptionsItemSelected(item);
      }
  }

  SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
          SharedPreferences.OnSharedPreferenceChangeListener() {

            @Override
            public void onSharedPreferenceChanged(
                    SharedPreferences sharedPreferences, String key) {              
                PrefMainActivity.this.init_view();

            }
// your stuff here
};


    private void init_view(){   
        try
        {
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
            String metric = getResources().getString(R.string.imperial);

            if (prefs.getString("measurement_unit",metric)  == metric)
                getFragmentManager().beginTransaction().replace(android.R.id.content,
                    new PrefMainFragmentImperial()).commit();
            else
                getFragmentManager().beginTransaction().replace(android.R.id.content,
                        new PrefMainFragmentMetric()).commit();


            prefs.registerOnSharedPreferenceChangeListener(spChanged);
        }
        catch(Exception ex)
        {

        }
    }
4

1 回答 1

1
        if (prefs.getString("measurement_unit",metric)  == metric)

java中的字符串需要通过equalsor来比较equalsIgnoreCase

于 2013-05-21T08:17:23.977 回答