1

viewpagerindicator と actionsherlock を使用してアプリを開発しています。タブ画面を実装しましたが、SherlockListFragment Async にデータをロードすると、フラグメントを少し変更するとフラグメントが消えます。

私は4つのタブA、B、C、Dを持っており、データを非同期にロードするときにAからBへの切り替えは問題ありませんが、Cに切り替えるとAにフラグメントが表示されず、Dに切り替えるとフラグメントが表示されなくなります.

エラーはスローされません。

私のフラグメントページアダプターは次のようなものです:

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

    @Override
    public Fragment getItem(int position) {

        return new CustomFragment();
    }

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

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

これは機能するフラグメントです:

public final class CustomFragment extends SherlockListFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setListAdapter(new SimpleAdapter(getSherlockActivity(), getData(),
         R.layout.descuentos_layout,  new String[] { "title" },
         new int[] { R.id.txtTitle }));
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.custom_list_fragment, null);
    return view;
}

protected List<Map<String, String>> getData() {
        List<Map<String, String>> myData = new ArrayList<Map<String, String>>();

        for (int i = 1; i < 20; i++){
            Map<String, String> temp = new HashMap<String, String>();
            temp.put("title", "Item " + i);
            temp.put("ItemId", String.valueOf(i));
            myData.add(temp);
        }

        return myData;
    }

}

しかし、これはしません:

public final class DescuentosFragment extends SherlockListFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ListViewLoaderTask llt = new ListViewLoaderTask();
    llt.execute("");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.descuentos_list_fragment, null);
    return view;
}


private class ListViewLoaderTask extends AsyncTask<String, Void, SimpleAdapter> {

    @Override
    protected SimpleAdapter doInBackground(String... str) {

        SimpleAdapter adapter = new SimpleAdapter(getSherlockActivity(), getData() , R.layout.descuentos_layout,new String[] { "title" },
                 new int[] { R.id.list_title });

        return adapter;
    }

    @Override
    protected void onPostExecute(SimpleAdapter adapter) {

        ListView listView = getListView();
        listView.setAdapter(adapter);
    }

    protected List<Map<String, String>> getData() {
        List<Map<String, String>> myData = new ArrayList<Map<String, String>>();

        for (int i = 1; i < 20; i++){
            Map<String, String> temp = new HashMap<String, String>();
            temp.put("title", "Item " + i);
            temp.put("ItemId", String.valueOf(i));
            myData.add(temp);
        }

        return myData;
    }

}
}

なにが問題ですか?どうも

4

0 に答える 0