2016-12-05 2 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

Ничто не мешает вам отменять и воссоздавать таймер каждый раз, когда вам нужно динамически менять свое время (практически нет штрафа за повторное повторение). Таким образом, вы можете добавить метод отмены и переназначения внутри фрагмента. –

Смежные вопросы