【发布时间】:2014-04-18 00:34:42
【问题描述】:
好的,我很难理解我的应用程序出了什么问题。所以我有 ViewPager 和这样的标签:
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" />
主要活动:
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...
在我使用 Jsoup scrape 和 CardListView 填充调用 AsyncTaskLoader 的每个片段中。现在一切正常,但可以说我在第 1 页。我刷入第3页。然后我滑回page1,内容(ListView)消失了。现在我再次刷到第3页或第4页,也没有内容。所以,长话短说我正在丢失我的数据(尝试过 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 有关?谢谢;)
【问题讨论】:
标签: java android android-fragments android-viewpager