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. 关于javascript中静态成员和实例成员的详细解释

    关于javascript中静态成员和实例成员的详细解释  在我们了解什么是静态成员和实例成员之前,我们首先来了解一下什么是实例? 实例就是由构造函数创建出来的对象. 例如案例中 p 就是实例: fun ...

  2. 在webstrorm中配置好es6 babel【更新:在webstorm中配置.vue和.vue文件中支持es6】

    第一步:全局安装babel-cli npm install -g babel-cli 第二步,新建一个空项目,在 WebStorm 中的当前项目中打开 Terminal,进入项目的根目录下, 安装 E ...

  3. angular4搭建博客(一)

    本文长期更新,未经运行,严禁转载. 博客(制作中) http://101.200.58.228/ Github https://github.com/Teloi/TEIndex 框架选择 Angula ...

  4. 获取json的节点名称

    好几次想取json的节点名称,今天搞定了. procedure GetJsonNames(o: ISuperObject; Strs: TStrings); var ite: TSuperAvlIte ...

  5. PHP 数组 & 字符串处理

    1:数组分割为字符串  implode 2:字符串分割为数组  explode() 3:替换字符串 eg: $a = "Hello world" str_replace(“H”,“ ...

  6. nginx全局查看进程

    1. 查看nginx的PID,以常用的80端口为例: [root@rbtnode1 nginx-1.14.2]# netstat -anop | grep 0.0.0.0:80tcp 0 0 0.0. ...

  7. C语言基础 (10) 变量作用域,生命周期 内存结构

    01 课程回顾 1.指针数组 注意: 对于数组来说,在使用sizeof的时候a和&a[0]是不一样的, 虽然以%x打印出来他们都是地址 2.值传递 int a; fun(a); int *** ...

  8. Spring框架的理解

    Spring 是一個开源的IOC和AOP容器框架! 具体描述为: 1.轻量级:Spring是非侵入性-基于Spring开发的应用中的对象可以不依赖API开发 2.依赖注入(DI---------dep ...

  9. 小松之LINUX 驱动学习笔记(开篇)

    时间对每个人都是公平的,就看你怎么对待他.每天多努力一点,未来就会轻松一点.作为一名北漂,感受着首都的压力,也曾萌生过逃离北上广的想法,但是,最后我最终还是选择留下来,随着年龄的增长,我已经没有那么多 ...

  10. IIS部署ASP.NET网站后提示只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态...

    今天,在IIS上部署网站后,出现了下面错误: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态.还请确保在应用程序配置的 <sy ...