2016-04-17 14 views
0

Angenommen, ich habe einen Timer, der eine TextView in Fragment A verwendet. Und ich möchte diesen Timer in Fragment B verwenden. Wie würde ich es tun? Dies ist der Code, der in Fragment A verwendet wird, um den Timer einzustellen ...Wie würde ich einen Timer von einem Fragment zum anderen weitergeben?

private Runnable mUpdateTimeTask = new Runnable() { 
    public void run() { 
     long totalDuration = mp.getDuration(); 
     long currentDuration = mp.getCurrentPosition(); 

     // Displaying total duration time 
     songTotalDurationLabel.setText(""+utils.milliSecondsToTimer(totalDuration)); 
     // Displaying current time 
     songCurrentDurationLabel.setText(""+utils.milliSecondsToTimer(currentDuration)); 

     // Running this thread after 100 milliseconds 
     mHandler.postDelayed(this, 100); 
    } 
}; 

Jetzt möchte ich den Timer verwenden, die mit dem songCurrentDurationLabel Textview verknüpft ist, wie auch in Fragment B.

Wie würde ich das Problem lösen?

Danke!

+0

Sie sollten Ihre Benutzeroberfläche nicht von außerhalb Ihres Hauptthreads aktualisieren. – dazito

+0

Können Sie bitte erklären? –

+0

überprüfen Sie die Erklärung zu dieser Frage: http://stackoverflow.com/questions/4369537/update-ui-from-thread * aber * nicht AsyncTask verwenden, werden Sie später Probleme (wie Speicherlecks, wenn Sie die Gerät). Lesen Sie mehr darüber hier: http://simonvt.net/2014/04/17/asynctask-is-bad-and-you-should-feel-bad/ – dazito

Antwort

0

Verwenden Sie den Timer in der Host-Aktivität und setzen Sie die Ergebnisse als Rückrufe. Das Android-UI-Toolkit ist nicht Thread-sicher - greifen Sie nicht außerhalb des UI-Threads auf die Benutzeroberfläche zu.

Überprüfen Sie einige gotchas.

Verwandte Themen