2016-12-05 60 views
0

我有我的主要活動是定期從數據庫這樣的更新數據的方法:更新片段UI定期

public static void timedTask(int timer) { 
    myTimer.cancel(); 
    myTimer = new Timer(); 
    myTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 

     dbint = db.dbpull(); 
     } 
    }, 0, timer); 
} 

現在的問題是,我怎麼能傳遞我從這種方法獲得的價值,和用數據更新片段內的TextView?

回答

1

比方說,在活動佈局已片段定義的編號example_fragment 所以我們可以片段的實例

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment); 

,可以在片段類中創建方法來更新數據

public void updateFragment(Data ..){ 
      // update view 
} 

,並在邊你的活動

fragment.updateFragment(data ..); 
0

最簡單的辦法是把Fragment內的計時器onCreateView()

因此,當您將片段連接到其視圖時,您將啓動計時器(您可以在SharedPreferences中保存一個時間戳以允許活動/片段生命週期中的一致性)。當你創建定時器的片段內,到期後,您可以直接從計時器回調中訪問TextView

只要確保你在onDestroyView()關閉計時器。

+0

我寧願保持定時器的方法裏面,因爲我希望能夠動態地改變定時器。 – user3050720

+0

沒有從取消和每一個需要動態地改變它的時間的時間重新創建計時器停止你(幾乎沒有任何懲罰一次又一次地這樣做)。所以你可以在Fragment中添加cancel和reschedule方法。 –