我正在使用viewpagerindicator和actionsherlock开发一个应用程序。我已经实现了一个标签屏幕但是当我在SherlockListFragment Async中加载数据时,片段会在几次更改片段后消失。
我有四个标签A,B,C,D,当我加载数据异步切换A到B没问题,但是当我切换到C时,A没有显示片段,当我切换到D时没有片段是显示了。
不会抛出任何错误。
My Fragment页面适配器是这样的:
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;
}
}
}
有什么问题? THX