2012-06-02 20 views
0

有沒有辦法找出用戶何時關閉特定的首選項屏幕?當用戶在我的一個首選項屏幕中更改首選項時,我需要進行一些更新。不是當用戶點擊實際的複選框時,而是當他們按下後退按鈕並完成編輯首選項時。用戶關閉特定首選項屏幕時運行一些代碼?

到目前爲止,我所能找到的是我可以重寫我的PreferenceActivity的onPause()事件,這似乎在用戶關閉首選項時發生。它的工作原理,但我不確定這是怎麼回事。有什麼建議麼?

編輯

我無法弄清楚如何真正從PreferenceActivity中調用我的主要活動的方法。嘗試玩putExtra()和各種東西。最終我想 - 爲什麼不做完全相反的?所以相反,我在我的主要活動中實施了onResume()方法。當用戶關閉首選項時,它非常適合做某些事情,並且我可以接受這一事實,即我每次恢復我的應用時都會運行更新方法。

回答

0

這是最好的方法:覆蓋onPause()方法。它在你的活動離開前臺之前就被調用了。

+0

好的,謝謝!當PreferenceActivity的onPause()事件被調用時,我將如何去調用主要活動中的方法?我對Java很陌生,但是從目前爲止我讀到的內容來看,我想我需要實現某種形式的回調?我怎麼做? – BadCash

0

是正確的地方處理和更新。

5

那麼我一直在尋找這個問題的解決方案,直到2分鐘前...我想我找到了方法。

Preference myPrefScreen = findPreference("myPrefScreen"); 
    myPrefScreen 
      .setOnPreferenceClickListener(new OnPreferenceClickListener() { 

       @Override 
       public boolean onPreferenceClick(Preference prefScreen) { 
        // TODO Auto-generated method stub 

        Dialog prefScreenDialog = ((PreferenceScreen) prefScreen) 
          .getDialog(); 
        prefScreenDialog 
          .setOnDismissListener(new OnDismissListener() { 

           @Override 
           public void onDismiss(DialogInterface arg0) { 
            // TODO Auto-generated method stub 


            ///HERE YOU CAN EXECUTE WHATEVER YOU WANT... 
           } 
          }); 
        return false; 
       } 
      }); 

您需要OnPreferenceClickListener正確實例化PreferenceScreen對話框只產生一次PreferenceScreen條目已被點擊屏幕,並與愛好的孩子在新窗口中顯示。否則,你總是得到Dialog()返回null,並且沒有辦法將OnDismissListener附加到它。

一旦你設置了OnDismissListener就完成了!

我希望這可以幫助。

快樂編碼到所有!