好吧,我很难理解我的应用程序出了什么问题。所以我有ViewPager和这样的Tabs:
Adapter.java
public class CustomPagerAdapter extends FragmentPagerAdapter {
public CustomPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment1();
case 1:
return new Fragment2();
// And so on...
@Override
public int getCount() {
return 4;
}以下是xml:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.env.test.app.MainActivity" />MainActivity:
public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
static final String[] tabTitles = {"test1","test2","test3","tes3"};
CustomPagerAdapter adapter;
ViewPager viewPager;
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new CustomPagerAdapter(getSupportFragmentManager());
actionBar = getActionBar();
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(adapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (String tabTitle : tabTitles) {
actionBar.addTab(actionBar.newTab().setText(tabTitle).setTabListener(this));
}
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
} // And 3 more implemented methods of tabs...在每一个片段中,我都调用了AsyncTaskLoader,其中包含了Jsoup、scrape和CardListView种群。现在一切都很好,但是让我说我在page1上。我冲进了page3。然后我又回到page1,内容(ListView)就消失了。现在我又一次浏览page3或page4,也没有任何内容。所以,长话短说,我丢失了我的数据(尝试过AsyncTask,但我更喜欢加载程序,问题也是一样的,所以我认为问题不存在于加载程序中)。然而,以下是其中的一个片段:
public class Fragment1 extends Fragment implements LoaderManager.LoaderCallbacks<ArrayList<Card>> {
SharedPreferences accountData;
String accountID, accountPassword;
public Fragment1() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
accountData = getActivity().getSharedPreferences(otheractivity.filename, 0);
accountID = accountData.getString("accountID", null);
accountPassword = accountData.getString("accountPassword", null);
getActivity().getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<ArrayList<Card>> onCreateLoader(int id, Bundle args) {
return new NetworkTask(getActivity(), accountID, accountPassword, getString(R.string.login_url), getString(R.string.target_url));
}
@Override
public void onLoadFinished(Loader<ArrayList<Card>> loader, ArrayList<Card> result) {
if (result != null) {
CardArrayAdapter adapter = new CardArrayAdapter(getActivity(), result);
CardListView cardListView = (CardListView) getActivity().findViewById(R.id.listView_schedule);
if (cardListView != null) {
cardListView.setAdapter(adapter);
}
} else {
TextView warning = (TextView) getActivity().findViewById(R.id.textView_sheduleWarning);
warning.setText("blah blah blah");
}
}
@Override
public void onLoaderReset(Loader<ArrayList<Card>> loader) {
}}
有什么想法吗?也许是和PagerAdapter或CardArrayAdapter有关?(谢谢;)
发布于 2014-04-17 16:34:42
解决这个问题有两种方法。
https://stackoverflow.com/questions/23138613
复制相似问题