2012-12-12 98 views
0

我有我的settings.java和我的fragment.java。從父類獲取數據片段

在片段中(存在於我的settings.java中)我有一個隨機數字來設置視圖。這完美地工作。我試圖將它從一個隨機int改爲從共享首選項中提取出來的東西。在我settings.java我有一個方法:

public int getHour() { 
     SharedPreferences settings = getSharedPreferences("My_Prefs", 
       MODE_PRIVATE); 
     int timeout = settings.getInt("timeout_hour", 8); 
     return timeout; 
    } 

和我說 ...settings.getHour(); 稱這種現象我fragment.java但是,這導致其崩潰。如果我簡單地用一個隨機int(任何int)替換它,程序運行完美。爲什麼我的應用程序運行時,只有8號,但當getHour()返回一個數字(在這種情況下8)它失敗。這是對片段的某種限制嗎?

+0

請提供一個崩潰日誌。需要更多的代碼來理解你想要做什麼。 –

回答

0

因爲設置是getHour()函數的局部變量。如果你想在你的片段中訪問它,使它成爲一個字段並提供一個公共的getter函數getSettings()。然後,在片段由

activity = (Settings) getActivity(); 

現在訪問設置由

activity.getHour() 

內片段得到活動實例。

+0

嗯...我覺得你的代碼在正確的軌道上,但我覺得你應該再次閱讀我的問題。我沒有任何叫做getSettings()的東西。你是什​​麼意思? – EGHDK

+0

查看編輯後。如果我理解正確,您想要在片段中訪問getHour()。 – Vasudev

+0

是的,這就是我想要做的,稍後當我回家時我會嘗試。謝謝 – EGHDK