スレッド間通信について教えて下さい。
ActivityのonCreateの中でMainFragmentPagerAdapterを呼び出す前に、DBからデータをリスト形式で取ってきて、Activityのグローバル変数に格納したいのですが、うまくいきません。
やりたい事は、タブの名前をDBに格納された「tab」テーブルを一覧取得して、「title」列を全件タブのタイトルに登録したいというものです。
java
1 @Override 2 protected void onCreate(Bundle saveInstanceState){ 3 4 super.onCreate(saveInstanceState); 5 setContentView(R.layout.activity_collection_list); 6 7 tabList = new ArrayList<>(); 8 9 Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); 10 setSupportActionBar(toolbar); 11 12 try{ 13 getTabInfo(this); 14 Thread.sleep(1000); 15 }catch (Exception e){ 16 17 } 18 19 mPagerAdapter = new MainFragmentPagerAdapter(getSupportFragmentManager()); 20 21 mViewPager = (ViewPager)findViewById(R.id.container); 22 mViewPager.setAdapter(mPagerAdapter); 23 24 TabLayout tabLayout = (TabLayout)findViewById(R.id.tabs); 25 tabLayout.setupWithViewPager(mViewPager); 26 }
現状は、クリエイトの中で、MainFragmentPagerAdapterでタブを生成する前に、スリープをさせて、getTabInfo(this)
java
1 private void getTabInfo(final Activity activity){ 2 new Thread(new Runnable() { 3 @Override 4 public void run() { 5 final List<Tab> tabList = ((DataCollecotor) getApplication()).getDataCollecotorDatabase().getTabList(); 6 7 activity.runOnUiThread(new Runnable() { 8 @Override 9 public void run() { 10 titleTest = tabList.get(0).getTitle(); 11 } 12 }); 13 } 14 }).start(); 15 }
final List<Tab> tabList = ((DataCollecotor) getApplication()).getDataCollecotorDatabase().getTabList();
この部分でtabListには入って欲しいと思って書いています。
titleTest = tabList.get(0).getTitle();
この部分は試験的に書きましたがうまくいきませんでした。
どうやればDBから値を取ってActivityの中で使えるようになるのか、ご教授下さい。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/24 07:03
2016/10/24 07:10
2016/10/24 07:17
2016/10/24 07:22
2016/10/24 07:28 編集
2016/10/24 07:35