2016-12-05 64 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方法。 –