当前位置: 代码迷 >> Android >> FragmentActivity与ViewPage切换 getItem执行了两遍,是异常还是本来就这样
  详细解决方案

FragmentActivity与ViewPage切换 getItem执行了两遍,是异常还是本来就这样

热度:8   发布时间:2016-04-28 04:11:54.0
FragmentActivity与ViewPage切换 getItem执行了两遍,是错误还是本来就这样
Fragment与ViewPage切换 getItem执行了两遍,是错误还是本来就这样

有熟悉这块的大神吗  帮忙看看吧 我是动态访问网络加载的Tab导航 连续访问两次接口 取不到数据啊
package com.icss.viewpagerdemos;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.util.TypedValue;
import android.view.Window;

import com.astuetz.PagerSlidingTabStrip;

public class MainActivity extends FragmentActivity {

private PagerSlidingTabStrip tabs;
private ViewPager pager;
private MyPagerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);

tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
pager = (ViewPager) findViewById(R.id.pager);
adapter = new MyPagerAdapter(getSupportFragmentManager());
Log.e("FragmentActivity", "onCreate");
pager.setAdapter(adapter);

final int pageMargin = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
pager.setPageMargin(pageMargin);
tabs.setViewPager(pager);
}

public class MyPagerAdapter extends FragmentStatePagerAdapter {

private final String[] TITLES = { "全部的眼部", "全部","全部","导航","视频" };

public MyPagerAdapter(FragmentManager fm) {
super(fm);
Log.e("MyPagerAdapter", "MyPagerAdapter");
}

@Override
public CharSequence getPageTitle(int position) {
Log.e("MyPagerAdapter", "getPageTitle");
return TITLES[position];
}

@Override
public int getCount() {
// Log.e("MyPagerAdapter", "getCount");
return TITLES.length;
}

@Override
public Fragment getItem(int position) {
Log.e("MyPagerAdapter", "getItem");
Log.e("MyPagerAdapter", "getItem===" + position);
return SuperAwesomeCardFragment.newInstance(position);
}

}

}

SuperAwesomeCardFragment类
package com.icss.viewpagerdemos;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.TextView;

public class SuperAwesomeCardFragment extends Fragment {

private static final String ARG_POSITION = "position";

private int position;

static SuperAwesomeCardFragment newInstance(int position) {
SuperAwesomeCardFragment f = new SuperAwesomeCardFragment();
Bundle b = new Bundle();
b.putInt(ARG_POSITION, position);
f.setArguments(b);
return f;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("onCreate", "1111111111111111111111111111111");
position = getArguments().getInt(ARG_POSITION);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.e("onActivityCreated", "1111111111111111111111111111111");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);

FrameLayout fl = new FrameLayout(getActivity());
fl.setLayoutParams(params);

final int margin = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 3, getResources()
.getDisplayMetrics());

TextView v = new TextView(getActivity());
params.setMargins(margin, margin, margin, margin);
v.setLayoutParams(params);
v.setLayoutParams(params);
v.setGravity(Gravity.CENTER);
v.setBackgroundResource(R.drawable.a);
v.setText("CARD " + (position + 1));

fl.addView(v);
return fl;
}

}


布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@color/white"
    android:layout_width="match_parent"