Activityから各Fragmentにデータを渡したい

1,764 views
Skip to first unread message

Kuluna

unread,
Feb 10, 2012, 9:22:28 PM2/10/12
to android-g...@googlegroups.com
こんにちは。
現在ViewPagerを使って1つのActivityで3つのFragmentをスワイプで切り替えて表示させています。

各Fragmentは1分ごとにデータベースにアクセスしてデータを表示・更新させているのですが、現状

・3つのFragmentが一斉にデータベースにアクセスしている
・3つのFragmentすべてに1分ごとにアクセスするHandlerを実装している
・データに変更がなくても同じ値で画面を更新している

状態です。
これを、

・Activityが1分間隔でデータベースにアクセスする
・取得したデータを各フラグメントに渡す
・データに変更がなければFragmentにデータを渡さない
・Fragmentは受け取った時に画面の表示・更新処理を行う

ようにしたいのですが、そもそもActivityからFragmentにデータを渡すことは可能なのでしょうか?
もし可能であれば、参考になりそうなページややり方を教えていただけないでしょうか。

よろしくお願いします。

yamada

unread,
Feb 12, 2012, 7:42:26 PM2/12/12
to 日本Androidの会
やまだです。

私もViewPagerを使ったアプリを作成中です。

> ・Activityが1分間隔でデータベースにアクセスする
Activity側でスレッドを動かせばいいのではないでしょうか。
データが変わったらHandlerでnotifyをかけます。

> ・取得したデータを各フラグメントに渡す
> ・データに変更がなければFragmentにデータを渡さない
> ・Fragmentは受け取った時に画面の表示・更新処理を行う

データを保存するSingletonのクラスを作って、
Fragmentはそこからデータを取得するようにしています。
これでデータは共有するのでデータが変わったら画面が反映しています。
ただ、ViewPagerだと前後の画面もインスタンス化しているようで
前後の画面は絶対に変更したくないといった場合は、
Activity側でViewPager.OnPageChangeListener#onPageSelectedあたり
でページの判定をすればなんとかなるのではないかと思います。

Kuluna

unread,
Feb 22, 2012, 9:20:56 PM2/22/12
to android-g...@googlegroups.com
返事が遅くなってしまいました。
あれからSingletonについて調べ、データの共有ができるようになりました。

ありがとうございます。
Reply all
Reply to author
Forward
0 new messages