android actionbar选项卡viewpage AsyncTask first选项卡在启动时为空

android actionbar选项卡viewpage AsyncTask first选项卡在启动时为空,android,android-fragments,android-asynctask,Android,Android Fragments,Android Asynctask,我花了几天时间试图解决这个问题,但没有成功。请帮帮我 我将选项卡导航与viewpager一起使用。共有四个片段。我使用async task下载需要放入视图中的数据。当应用程序启动时,第一个片段是ampty。但是当我滑动到第二个或第三个时,它们有数据。如果我从第二个滑动到第一个,它也有数据。所以我想我可能是notifyDataSetChanged有问题,但我试过了,但没有成功 MainActivity.java public void onCreate(Bundle savedInstanceSt

我花了几天时间试图解决这个问题,但没有成功。请帮帮我

我将选项卡导航与viewpager一起使用。共有四个片段。我使用async task下载需要放入视图中的数据。当应用程序启动时,第一个片段是ampty。但是当我滑动到第二个或第三个时,它们有数据。如果我从第二个滑动到第一个,它也有数据。所以我想我可能是notifyDataSetChanged有问题,但我试过了,但没有成功

MainActivity.java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager());

    final ActionBar actionBar = getActionBar();

    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionBar.setDisplayShowTitleEnabled(false);

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setOffscreenPageLimit(1);
    mViewPager.setAdapter(mAppSectionsPagerAdapter);

    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        //private ArrayList hasLoadedPages = new ArrayList<Integer>();
        @Override
        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
        }
    for (int i = 0; i < mAppSectionsPagerAdapter.getCount(); i++) {
        actionBar.addTab(
                actionBar.newTab()
                        .setText(mAppSectionsPagerAdapter.getPageTitle(i))
                        .setTabListener(this));
    }
  }

public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    mViewPager.setCurrentItem(tab.getPosition());
}

public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

public static class AppSectionsPagerAdapter extends FragmentPagerAdapter {


    public AppSectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }


    @Override
    public Fragment getItem(int i) {
        switch (i) {
            //case 0:
            //    return new LaunchpadSectionFragment();

            default:
                Fragment fragment = new DummySectionFragment();
                Bundle args = new Bundle();
                args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, i + 1);
                fragment.setArguments(args);
                return fragment;
        }
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        String str="";
        if (position==0){
            str = "one";
        }else if(position==1){
            str = "two";
        }else if(position==2){
            str = "three";
        }else if(position==3){
            str = "four";
        }
        return str;
    }

    @Override
    public void notifyDataSetChanged()
    {
        super.notifyDataSetChanged();
    }

}

public static class DummySectionFragment extends Fragment {

    public static final String ARG_SECTION_NUMBER = "section_number";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_section_dummy, container, false);
        return rootView;

    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        Bundle args = getArguments();
        mCid = args.getInt(ARG_SECTION_NUMBER);
        mNewsData = new ArrayList<HashMap<String,Object>>();
        mNewsList = (ListView)getView().findViewById(android.R.id.list);
        mNewsListAdapter = new SimpleAdapter(this.getActivity(), mNewsData, R.layout.newslist_item, 
                new String[]{"newslist_item_title","newslist_item_digest","newslist_item_source","newslist_item_ptime"}, 
                new int[]{R.id.newslist_item_title,R.id.newslist_item_digest,R.id.newslist_item_source,R.id.newslist_item_ptime});
        View loadMoreLayout = this.getLayoutInflater(savedInstanceState).inflate(R.layout.loadmore, null);
        mNewsList.setAdapter(mNewsListAdapter);
        mNewsList.addFooterView(loadMoreLayout);
        mNewsList.setOnItemClickListener(new OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                Intent intent = new Intent(getActivity(), NewsDetailsActivity.class);
                startActivity(intent);
                intent.putExtra("newsDate", mNewsData);
                intent.putExtra("position", position);
                startActivity(intent);
            }
        });
        mLoadMoreBtn = (Button)getView().findViewById(R.id.loadmore_btn);
        mLoadMoreBtn.setOnClickListener(loadMoreListener);

        loadNewsAsyncTask = new LoadNewsAsyncTask();
        loadNewsAsyncTask.execute(mCid,0,true);
    }
}

private static class LoadNewsAsyncTask extends AsyncTask<Object, Integer, Integer>
{

    @Override
    protected void onPreExecute()
    {
        mLoadMoreBtn.setText(R.string.loadmore_txt);
    }

    @Override
    protected Integer doInBackground(Object... params)
    {
        return getSpeCateNews((Integer)params[0],mNewsData,(Integer)params[1],(Boolean)params[2]);
    }

    @Override
    protected void onPostExecute(Integer result)
    {
        switch (result)
        {
        case NONEWS:
            mLoadMoreBtn.setText(R.string.no_news);
            break;
        case NOMORENEWS:
            mLoadMoreBtn.setText(R.string.no_more_news);
            break;
        case LOADERROR:
            mLoadMoreBtn.setText(R.string.load_news_failure);
            break;
        }
        mNewsListAdapter.notifyDataSetChanged();
        mLoadMoreBtn.setText(R.string.loadmore_btn);
    }
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAppSectionsPagerAdapter=新的AppSectionsPagerAdapter(getSupportFragmentManager());
最终ActionBar ActionBar=getActionBar();
actionBar.setHomeButtonEnabled(假);
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
actionBar.setDisplayShowTitleEnabled(false);
mViewPager=(ViewPager)findViewById(R.id.pager);
mViewPager.setOffscreenPageLimit(1);
mViewPager.setAdapter(mAppSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(新的ViewPager.SimpleOnPageChangeListener(){
//private ArrayList hasloaddedpages=new ArrayList();
@凌驾
已选择页面上的公共无效(内部位置){
actionBar.setSelectedNavigationItem(位置);
}
对于(int i=0;i