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;
}
}
}
なにが問題ですか?どうも