1
ASyncTask 내에서 일부 데이터를 가져 오려고 시도하고 완료되면 해당 데이터를 뷰 페이지 내부의 조각으로 전달합니다. 하지만 다음과 같은 예외가 발생합니다 :AsyncTask 내부에 ViewPager를 설정하십시오.
java.lang.IllegalStateException : ViewPager 바인딩되지 않았습니다.
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 :
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);
}
}
내가의 내용을 이동 "OnPostExecute (무효 결과를)"OnCreateView에
나는 다음과 같은 코드가 그것은 작동합니다 ...하지만 조각을 만들기 전에 모든 데이터를 가져와야합니다.
나에게 무엇이 잘못 됐는지 말해 줄 수 있습니까? ! :(
그것을 이해 해달라고하지만 작동하는 것 같다 :?/어떤 설명이 여기에 ? – cV2
@ cV2 예, 레이아웃이 변경되어 UI 스레드에서 실행해야합니다. AsyncTask의 onPostExecute는 UIThread입니다. :) – Reinherd
그래, 응답 해 주셔서 감사합니다.하지만 UI가 onCreate에 설정되지 않는 이유는 무엇입니까? onPostExecute()에서 adaptions 만들기 ... onPostExecute에서 전체 레이아웃을 설정하는 이유는 무엇입니까? (그것은 진짜 질문이었습니다 :) 당신의 대답을 고대했습니다. – cV2