1
私はASyncTask内でいくつかのデータを取得しようとしていますが、完了したらそのデータをビューページ内のフラグメントに渡します。しかし、次の例外が発生します。AsyncTask内でViewPagerを設定する
java.lang.IllegalStateException:ViewPagerがバインドされていません。
Iは、次のコードを持っている:私はOnCreateViewする "OnPostExecute(ボイド結果)" の内容を移動する
class TeamFragmentAdapter extends FragmentPagerAdapter implements TitleProvider {
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
ArrayList<String> titels = new ArrayList<String>();
public TeamFragmentAdapter(FragmentManager fm) {
super(fm);
fragments.add(new TeamInformatieFragment(team));
titels.add("Informatie");
fragments.add(new ContactFragment());
titels.add("Informatie");
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public String getTitle(int position) {
return titels.get(position);
}
}
:
OnCreateView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.simple_tabs);
team_id = this.getIntent().getIntExtra("index", 0) + 1;
new getTeam().execute();
}
ASyncTask:
@Override
protected Void doInBackground(Void... arg0) {
team = api.getTeamByID(team_id);
return null;
}
@Override
protected void onPostExecute(Void result) {
mAdapter = new TeamFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator = (TabPageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
progressDialog.dismiss();
}
TeamFragmentAdapterそれは動作します...しかし、フラグメントが作成される前にすべてのデータを取得する必要があります。
どうしたらいいのでしょうか教えてください。 !:(
がそれを理解しないが、動作するようです:?/任意の説明をここに? – cV2
@ cV2はい、レイアウトが変更されているので、UIスレッドで実行する必要がありますので、AsyncTaskのonPostExecuteはUIThreadです:) – Reinherd
回答ありがとうございますが、なぜonCreateでUIを設定できないのですか? onPostExecute()でアダプテーションを作成する... なぜ、onPostExecuteで完全なレイアウトを設定するのですか? (それは本当の質問だった):)あなたの答えを楽しみにして – cV2