Android:如何从我的主要活动中调用findPreference()?

时间:2012-03-10 12:00:49

标签: android preferences

我正在处理Android应用的首选项屏幕。如果前一个项目具有特定值,我想禁用(灰掉它)项目。

我实现了两个类:MainActivity和PreferencesActivity。

在MainActivity中我做了:

public class MainActivity extends Activity implements OnSharedPreferenceChangeListener {
...
    public void onCreate (Bundle savedInstanceState) {
        ...
        sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        sharedPrefs.registerOnSharedPreferenceChangeListener(this);
        ...
    }

然后,当用户请求我的偏好时:

startActivity(new Intent(this, PreferencesActivity.class));

然后,为了处理MainActivity中的首选项,我这样做:

@Override
public void onSharedPreferenceChanged (SharedPreferences prefs, String key) {
    if ("sport".equals(key)) {
        sport = prefs.getString("sport", "");
        ListPreference lp = findPreference("match_duration");
        if (sport.equals(getString(R.string."sport_soccer"))) {
            lp.setEnabled(false);
        }
    }
    ...
 }

问题是我无法在MainActivity中调用findPreference(“方法findPreference(String)未定义类型MainActivity”...)。 我的方法有误吗?我应该在PreferencesActivity中实现onSharedPreferenceChanged()方法吗?如果是这样,我如何在PreferencesActivity中使用MainActivity属性?

1 个答案:

答案 0 :(得分:3)

应该从实现findPreference()接口(在我的上下文中为PreferenceActivity)的类中调用

PreferencesActivity。可以通过MainActivity类访问SharedPreferences个属性。