1、新建super

//super提供统一的FragmentActivity入口。
public abstract class SuperFragmentActivity extends FragmentActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragmentlistactivity);
FragmentManager fm=getSupportFragmentManager();
Fragment fragment=fm.findFragmentById(R.id.mainfragment);
if (fragment == null){
fragment=createFragment();
fm.beginTransaction().add(R.id.mainfragment,fragment).commit();
}
}
public abstract Fragment createFragment();
}
//接上一个项目,创建好列表
//FragmentListActivity
public class FragmentListActivity extends SuperFragmentActivity{

    @Override
public Fragment createFragment() {//实现super中的方法
return new StudentListFragment();
}
}
//创建ListFragment
public class StudentListFragment extends Fragment implements View.OnClickListener {
private TextView mNameTextView;
private TextView mAgeTextView;
private List<Student> mStudents;
private Student mStudent;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view=inflater.inflate(R.layout.recyclistview, container,false);
RecyclerView recyclerView= (RecyclerView) view.findViewById(R.id.recycleview);//Fragment绑定RecycleView
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(new RecycleAdpter());
return view;
} @Override
public void onClick(View v) {
startActivity(viewpageActivity.newIntent(getActivity(),mStudent.getNum()));//当被点击时启动启动另一个FragmentActivity
} private class RecycleAdpter extends RecyclerView.Adapter<RecyclerViewHolder> { @Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater=LayoutInflater.from(getActivity());
View v=inflater.inflate(R.layout.studentview,parent,false);
return new RecyclerViewHolder(v);
} @Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
mStudent=mStudents.get(position);
mNameTextView.setText(mStudent.getName());
mAgeTextView.setText(mStudent.getAge()+"");
} @Override
public int getItemCount() {
mStudents=StudentList.get();
return mStudents.size();
}
}
private class RecyclerViewHolder extends RecyclerView.ViewHolder{ public RecyclerViewHolder(View itemView) {
super(itemView);
mAgeTextView= (TextView) itemView.findViewById(R.id.age_textview);
mNameTextView= (TextView) itemView.findViewById(R.id.name_textview);
itemView.setOnClickListener(StudentListFragment.this);
}
} }
2、FragmentActivity绑定ViewPage
public class ViewpageActivity extends FragmentActivity {
private static final String EXTRA_INDEX = "com.example.ting.criminalintentpractise.viewpage";
private ViewPager mViewPager;
private List<Student> mStudentList; @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpage);
mViewPager = (ViewPager) findViewById(R.id.viewpage);
FragmentManager fm = getSupportFragmentManager();
int num = getIntent().getIntExtra(EXTRA_INDEX, 0);
mStudentList=StudentList.get();
mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) {//将样式文件中的viewpager绑定到一个fragment
@Override
        //滚动的位置
public Fragment getItem(int position) {
return StudentFragment.newInstance(position);
}
@Override
        //总的滚动页数
public int getCount() {
return StudentList.get().size();
}
});
mViewPager.setCurrentItem(num); //设置滚动起始页
} public static Intent newIntent(Context context, int index) {
Intent intent = new Intent(context, ViewpageActivity.class);
intent.putExtra(EXTRA_INDEX, index);
return intent;
}
}
3、新建Fragment
public class StudentFragment extends Fragment {
private TextView mNameTextView;
private TextView mAgeTextView;
private static String ARG_INDEX = "com.example.ting.criminalintentpractise.student";
private int num;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.studentview, container, false);//启动自身的样式文件
mNameTextView = (TextView) v.findViewById(R.id.name_textview);
mAgeTextView = (TextView) v.findViewById(R.id.age_textview);
List<Student> list = StudentList.get();
mNameTextView.setText(list.get(num).getName());
mAgeTextView.setText(list.get(num).getAge()+"");
return v;
}
//为启动该Fragment封装启动参数
public static StudentFragment newInstance(int index) {
Bundle bundle = new Bundle();
bundle.putInt(ARG_INDEX, index);
StudentFragment fragment = new StudentFragment();
fragment.setArguments(bundle);//通过Arguments将参数传入Fragment
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
num = getArguments().getInt(ARG_INDEX); //接收Activity传入的参数
}
}
4、心得
Intent和Arguments和Bundle关系
1、Activity间相互传质使用Intent。
2、Activity和Fragment间传值使用Arguments。
3、Intent和Arguments传值都是封装在Bundle中进行的,Bundle是Intent和Argument传值的载体。

Activity、Fragment、ViewPage的更多相关文章

  1. Activity、Fragment、Dialog基类简单整理

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 这里简单记录下Activity.Fragment.Dialog基类中的常规写法,后续根据项目需求进行相应的扩展. BaseActiv ...

  2. 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  3. Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面

    感觉 Android 到处都是坑,每个地方都要把人折腾半天. 今天来简单说说 Android之ActionBar.Tabs.Fragment.ViewPager 实现标签页切换并缓存页面 关于他们的介 ...

  4. Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  5. ViewPager、Fragment、Matrix综合使用实现Tab滑页效果

    原文地址:http://www.cnblogs.com/kross/p/3372987.html 我们实现一个上面是一个可以左右滑动的页面,下面是三个可点击切换的tab按钮,tab按钮上还有一个激活条 ...

  6. [Android] Android Butterknife 8.8.1 在 Activity 和 Fragment 、 Adapter 中的使用

    ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤.是大神JakeW ...

  7. android 数据绑定(1)Ativity、Fragment、Item绑定数据源

    1.简介 官方文档:  https://developer.android.com/topic/libraries/data-binding 官方示例: https://github.com/andr ...

  8. Android Tab -- 使用ViewPager、Fragment、FragmentPagerAdapter来实现

    原文地址:http://blog.csdn.net/crazy1235/article/details/42678877 效果:滑动切换:点击标签切换. 代码:https://github.com/l ...

  9. Android -- TabHost、Fragment、状态保存、通信

    工程结构                                                                                       TabAFm到Ta ...

随机推荐

  1. 干货 | TensorFlow的55个经典案例

    转自1024深度学习 导语:本文是TensorFlow实现流行机器学习算法的教程汇集,目标是让读者可以轻松通过清晰简明的案例深入了解 TensorFlow.这些案例适合那些想要实现一些 TensorF ...

  2. Shell Notes

    查找: find: 实时查找,精确,速度慢,支持正则 find 查找路径 查找标准 查到后处理动作 查找路径默认当前目录,查找标准默认路径下所有文件,动作默认打印到屏幕 匹配标准: -name 'fi ...

  3. Java中将JSON格式的数据转换成对应的Bean、Map、List数据

    简单说明: 为了方便数据在客户端及服务器端的传输,有时候我们会用一些比较方便组织的数据类型,比如json.xml等传给客户端,客户端也可以重新组织数据传回服务器端.JSON和XML提供了一套比较方便的 ...

  4. 【Oracle】修改参数的同时添加注释

    当修改参数时添加注释,我们会用到如下语句: alter system set parameter=value comment='description'; --修改参数需要有相应权限的用户去执行. 例 ...

  5. 我的C++笔记(类与对象)

    /* * Main.cpp * * Created on: 2015-7-24 * Author: feiruo */ /* * 类与对象: * * 1.抽象: * 面向对象方法中的抽象,是指对具体问 ...

  6. Mysql优化-为表字段添加索引

    1.添加PRIMARY KEY(主键索引): ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) : ALTE ...

  7. 点击之后上传图片到页面 input type="file" 样式

    <!DOCTYPE html><head> <meta http-equiv="Content-Type" content="text/ht ...

  8. 【转】Oracle基础结构认知—oracle物理结构 礼记八目 2017-12-13 20:31:06

    原文地址:https://www.toutiao.com/i6499008214980362765/ oracle数据库启动:oracle服务启动,通过参数文件查找控制文件,启动控制文件,则控制文件调 ...

  9. html页面之间传值问题

    1.如再A页面(A.html)通过window.open(B.html?code=11)或者通过其他方式跳转到其它html页面时: 可通过以下方式进行传递参数. //B.html页面function ...

  10. Linux设备驱动--块设备(四)之“自造请求”(转)

    前面, 我们已经讨论了内核所作的在队列中优化请求顺序的工作; 这个工作包括排列请求和, 或许, 甚至延迟队列来允许一个预期的请求到达. 这些技术在处理一个真正的旋转的磁盘驱动器时有助于系统的性能. 但 ...