2012-03-10 31 views
3

我正在處理我的Android應用程序的首選項屏幕。如果前一個項目具有特定值,我想禁用(變灰)一個項目。Android:我如何從我的主要活動調用findPreference()?

我已經實現了兩個類: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)未定義爲e類型MainActivity「)。 我的方法錯了嗎?我在PreferencesActivity中實現了onSharedPreferenceChanged()方法?如果是這樣,我如何在PreferencesActivity中使用MainActivity屬性?

回答

3

findPreference()應該從實現PreferenceActivity接口的類中調用(在我的上下文中爲PreferencesActivity)。 MainActivity屬性可以通過SharedPreferences類訪問。

+3

您可以分享您所做的代碼更改以解決問題嗎?我不完全知道你是如何實現它的。 – impossible 2016-07-04 06:59:57

相關問題