2012-03-11 8 views
1

を呼び出してからメソッドを呼び出して、私が呼ん:アンドロイド:環境設定画面に対するユーザの要求に応じて、私の活動で活動

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

Preferencesクラスは、このように定義されています

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener { 
    ... 
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
     ... 
    } 

} 

私が実装する必要があります私のプリファレンスクラスのOnSharedPreferenceChangeListenerは、たとえば、特定の選択に基づいてプリファレンス項目を無効にできるようにしたいと考えているからです。 しかし、私はそれを私の主なアクティビティに実装して、環境設定の変更に対応する必要があります。

残念ながら、onSharedPreferenceChanged()は自分の主なアクティビティではなく、自分のプリファレンスでのみ発生します。ボットのアクティビティではどのように強制されますか?

または、どのように私のメインアクティビティでonSharedPreferenceChanged()から手動でonSharedPreferenceChanged()を呼び出すことができますか?

答えて

2

、あなたは環境設定の変更のためのリスナー登録することができます。

SharedPreferences prefs = PreferenceManager 
    .getDefaultSharedPreferences(this); 
prefs.registerOnSharedPreferenceChangeListener(this); 

をして、あなた自身のonSharedPreferenceChanged方法で、あなたの活動にSharedPreferences.OnSharedPreferenceChangeListenerを実装します。

+0

ありがとうございます!私はすでにメインアクティビティでregisterOnSharedPreferenceChangeListener()を行っていましたが、何らかの理由でコメントアウトされました!あなたのpropmtnessをありがとう... – MarcoS

0

いくつかの機能を両方のアクティビティからアクセスできるようにしたい場合は、このコードをどこからでも呼び出せる静的メソッドに組み込むことで最も効果的です。 Androidのアクティビティは分離されているため、あるアクティビティから他のアクティビティのインスタンスへのアクセスは実際にはありません。あなたの主な活動で

1

現在、「アクティブ」でないアクティビティの設定の変更を監視することはほとんど意味がありません。 onResumeonRestartなど、メインアクティビティのライフサイクルイベントを処理する必要があります。

関連する問題