我正在開發一個基本上由自定義視圖組成的Android模塊。第三方可以放入任何他們的活動中。 該模塊包含一個配置活動(基於PreferenceActivity)。Android意圖活動回調
鑑於您無法從View開始活動,模塊會在其顯示的活動中調用'openConfig(意圖意向)'。此活動充當模塊的代理。
到目前爲止工作正常(雖然我真的很喜歡模塊內部處理所有內容,不需要委託方法,但我認爲這是不可能的)。 但是,我需要從首選項活動到模塊的某種回調,以便在更改設置時通知模塊。
我正在考慮將模塊的主類添加爲首選項活動的代理;
ConfigActivity a = new ConfigActivity();
a.testVar = "testtest";
Intent intent = new Intent(getContext(), a.getClass());
delegate.handleConfigAction(intent); //
然而,這個測試只是一個簡單的字符串(而不是接口)顯示,該活動開始後的字符串將不會置。
第二個想法是在意圖上使用'putExtra()',但這並不適合用例,因爲我真的想要放在那裏的委託是一個View而不是一個可序列化的數據對象。
有沒有什麼方法可以讓我在內部處理?我知道'onActivityResult()'函數(http://developer.android.com/training/basics/intents/result.html),但這意味着使用我的模塊的第三方開發人員需要處理此問題,這是由於顯而易見的原因需要避免的。
任何幫助將不勝感激!
編輯:最終的解決方案 最後,我已經改變了模塊從視野中的片段,該功能現在與處理「子」活動,這樣更好。當從一個片段開始一個活動時,'onActivityResult'函數可以很好地完成當前的任務。
「以便模塊在設置被更改時得到通知」 - 爲什麼不使用[OnSharedPreferenceChangeListener](http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener。 HTML)? – CommonsWare 2015-02-24 14:47:39
那麼我將如何註冊該聽衆呢?我的意思是,PreferencesActivity將從一個視圖開始,而不是一個活動。 – AlBirdie 2015-02-25 09:33:14
觀點發起活動是一個關注點分離設計缺陷,恕我直言。這就是說,在啓動PreferenceActivity之前,沒有什麼能阻止'View'訪問'SharedPreferences'並調用'setOnSharedPreferenceChangeListener()'。 – CommonsWare 2015-02-25 12:15:47