Fragment复用、懒加载

一、xml 布局中

1、Activity xml

 android:id="@+id/tablayout"

        android:layout_width="match_parent"

        android:layout_height="54dp" />

        android:id="@+id/vp"

        android:layout_width="match_parent"

        android:layout_height="match_parent" />

2、Fragment xml        

android:id="@+id/title"

        android:textSize="20sp"

        android:gravity="center"

        android:layout_gravity="center"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:text="@string/hello_blank_fragment" />

二、Activity中

private TabLayout tablayout;

    private ViewPager vp;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        initView();

        List fragments = new ArrayList<>();

        List strings = new ArrayList<>();

        String[] titles = {"A", "B", "C", "D", "E"};

        strings.addAll(Arrays.asList(titles));

        for (String string : strings) {

            BlankFragment fragment = new BlankFragment();

            Bundle bundle = new Bundle();

            bundle.putString("title" , string);

            fragment.setArguments(bundle);

            fragments.add(fragment);

        }

        FragmentAdapter adadpter = new FragmentAdapter(getSupportFragmentManager(), fragments, strings);

        vp.setAdapter(adadpter);

        tablayout.setupWithViewPager(vp);

    }

    private void initView() {

        tablayout = (TabLayout) findViewById(R.id.tablayout);

        vp = (ViewPager) findViewById(R.id.vp);

    }

三、适配器中

public class FragmentAdapter extends FragmentStatePagerAdapter {

    private List fragments;

    private List strings;

    public FragmentAdapter(FragmentManager fm, List fragments, List strings) {

        super(fm);

        this.fragments = fragments;

        this.strings = strings;

    }

    @Override

    public Fragment getItem(int position) {

        return fragments.get(position);

    }

    @Override

    public int getCount() {

        return fragments.size();

    }

    @Nullable

    @Override

    public CharSequence getPageTitle(int position) {

        return strings.get(position);

    }

}

四、Fragment中

public class BlankFragment extends Fragment {

    private TextView title;

    private String title1;

    private String title2;

    @Override

    public void setUserVisibleHint(boolean isVisibleToUser) {

        super.setUserVisibleHint(isVisibleToUser);

        if(isVisibleToUser){

            Bundle arguments = getArguments();

            title1 = arguments.getString("title");

            Log.e("TAG" , title1 +":::::::::");

        }

    }

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container,

                             Bundle savedInstanceState) {

        View inflate = inflater.inflate(R.layout.fragment_blank, container, false);

        initView(inflate);

        Bundle arguments = getArguments();

        title2 = arguments.getString("title");

        Log.e("TITLE" , title2 +":::::::::");

        this.title.setText(title1);

        return inflate;

    }

    private void initView(View inflate) {

        title = (TextView) inflate.findViewById(R.id.title);

    }

}

猜你喜欢

转载自blog.csdn.net/qq_42749901/article/details/81161911
今日推荐