ActionBarActivity를 사용하여 5 개의 탭을 만듭니다. FragmentPagerAdapter를 확장 한 SectionsPagerAdapter를 사용하여 5 개의 탭 사이를 스 와이프하기 위해 ViewPager를 사용했습니다. 각 탭에는 oncreateview 메소드에서 호출되는 asynctask가있는 조각이 있습니다. 내가 한 조각에있을 때, 다른 조각에 asynctask가 호출되고있다.ViewPager를 사용할 때 ActionBarActivity 조각에서 AsyncTask를 처리하는 방법은 무엇입니까?
oncreateview 메서드에서 토스트 메시지를 사용하여 시도한 결과 asynctask 대신 각 조각이 사용되었습니다. 그러나 잘못된 토스트 메시지가 잘못된 부분에서 해고되고 있습니다.
에서 OnCreate 메소드 코드 :
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager_exp);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position)
{
actionBar.setSelectedNavigationItem(position);
actionBar.setTitle(getHomePageTitle(position));
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++)
{
// Create a tab with text corresponding to the page title defined by
// the adapter. Also specify this Activity object, which implements
// the TabListener interface, as the callback (listener) for when
// this tab is selected.
actionBar.addTab(actionBar.newTab()
.setIcon(getPagedrawable(i))
.setTabListener(this));
}
// 어댑터 클래스 코드 :
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position)
{
case 0:
Fragment1 f1 = new Fragment1();
return f1;
case 1:
Fragment2 f2 = new Fragment2();
return f2;
case 2:
Fragment3 f3 = new Fragment3();
return f3;
case 3:
Fragment4 f4 = new Fragment4();
return f4;
case 4:
Fragment5 f5 = new Fragment5();
return f5;
}
return null;
}
@Override
public int getCount() {
// Show 5 total pages.
return 5;
}
}
Fragemnt 클래스 코드 :
public class F1 extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.f1,container, false);
Toast.makeText(getActivity(), "F1", Toast.LENGTH_SHORT).show();
return view;
}
}
감사합니다 dude..this worked – Anirudh
@Someone 어딘가에서 인접한 조각을 다시 시작해야하기 때문에 두 조각 사이를 스크롤 할 수 있습니다. – LordRaydenMK
저는 그것을 알아 냈습니다. 어댑터가 정말로 중요합니다. 모든 조각을 인스턴스화하고 참조를 유지해야합니다. getItem()은 객체를 반환합니다. 불행히도 getItem()은 매번 새로운 Fragment1, Fragment2 등을 생성했습니다. 그러나 여전히 ViewPager 내부의 단편을 사용하는 것은 너무 복잡합니다. 현재 구현은 실제로 몇 조각에서만 작동합니다. 그렇지 않으면 힙 사용이 급격하게 늘어납니다. –