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

のは、あなたがフラグメントIDでアクティビティレイアウトで定義されているとしましょう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

時間を動的に変更する必要があるたびに、タイマーをキャンセルして再作成することからあなたを止めることはありません(何度も何度も何度も何度もやってもペナルティはありません)。そのため、フラグメント内にcancelおよびrescheduleメソッドを追加できます。 –

関連する問題