1

の修正版でViewPagerIndicatorライブラリを使用しSampleTabsDefault.javaます。

私が欲しいもの:

バックグラウンドでいくつかのデータをロードし、タスクが終了したときにAsyncTask呼び出す必要があります。setAdapter

問題:

エラーが表示されます:ViewPagerバインドされていません。

コード:

public class SampleTabsDefault extends FragmentActivity {
    private static final String[] CONTENT = new String[] { "Recent", "Artists",
            "Albums", "Songs", "Playlists", "Genres" };
    FragmentPagerAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_tabs);
        new LoadContentTask().execute();
    }

    private void loadContent() {
        // TODO Auto-generated method stub

        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(adapter);

        TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
        indicator.setViewPager(pager);
    }

    private class LoadContentTask extends AsyncTask<Object, Object, Object> {

        @Override
        protected Object doInBackground(Object... arg) {
            adapter = new GoogleMusicAdapter(getSupportFragmentManager());
            return true;
        }

        protected void onPostExecute(Object result) {
            // process result
            loadContent();
        }
    }

    class GoogleMusicAdapter extends FragmentPagerAdapter {
        public GoogleMusicAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return CONTENT[position % CONTENT.length].toUpperCase();
        }

        @Override
        public int getCount() {
            return CONTENT.length;
        }
    }
}
4

1 に答える 1

0

タスクが完了したら setContentView を呼び出します。

于 2013-03-07T04:39:12.317 に答える