Activity、Fragment、ViewPage
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的更多相关文章
- Activity、Fragment、Dialog基类简单整理
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 这里简单记录下Activity.Fragment.Dialog基类中的常规写法,后续根据项目需求进行相应的扩展. BaseActiv ...
- 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果
本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...
- Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面
感觉 Android 到处都是坑,每个地方都要把人折腾半天. 今天来简单说说 Android之ActionBar.Tabs.Fragment.ViewPager 实现标签页切换并缓存页面 关于他们的介 ...
- Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果
本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...
- ViewPager、Fragment、Matrix综合使用实现Tab滑页效果
原文地址:http://www.cnblogs.com/kross/p/3372987.html 我们实现一个上面是一个可以左右滑动的页面,下面是三个可点击切换的tab按钮,tab按钮上还有一个激活条 ...
- [Android] Android Butterknife 8.8.1 在 Activity 和 Fragment 、 Adapter 中的使用
ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤.是大神JakeW ...
- android 数据绑定(1)Ativity、Fragment、Item绑定数据源
1.简介 官方文档: https://developer.android.com/topic/libraries/data-binding 官方示例: https://github.com/andr ...
- Android Tab -- 使用ViewPager、Fragment、FragmentPagerAdapter来实现
原文地址:http://blog.csdn.net/crazy1235/article/details/42678877 效果:滑动切换:点击标签切换. 代码:https://github.com/l ...
- Android -- TabHost、Fragment、状态保存、通信
工程结构 TabAFm到Ta ...
随机推荐
- Oracle数据库安装与连接与简介
Oracle数据库的安装 1.登录Oracle官网——试用和下载 2.同意协议--->file1 3.完成配置 4.测试连接:打开Oracle developer--->新建连接,注意用户 ...
- 9) 十分钟学会android--使用Fragment建立动态UI
为了在 Android 上为用户提供动态的.多窗口的交互体验,需要将 UI 组件和 Activity 操作封装成模块进行使用,这样我们就可以在 Activity 中对这些模块进行切入切出操作.可以用 ...
- I/O多路复用技术
典型应用于以下场合 1.处理多个描述字时,比如同时处理套接字和磁盘IO.终端IO 2.一个客户同时处理多个套接字 3.服务器既要处理监听套接字,又要处理已连接套接字 4.既要处理TCP.也要处理UDP ...
- Linux vi命令快操作汇总
第一部份:一般指令模式可用的按钮說明,游标移动.复制粘贴.搜寻取代等 一.移动游标的方法h 或 向左方向鍵(←) 游标向左移动一个字节j 或 向下方向鍵(↓) 游标向下移动一个字节k 或 向上方向 ...
- javaEE_maven_struts2_tomcat_first
1 .eclipse中新建项目
- 【转】【Oracle 集群】Oracle 11G RAC教程之集群安装(七)
原文地址:http://www.cnblogs.com/baiboy/p/orc7.html 阅读目录 目录 集群安装 参考文献 相关文章 Oracle 11G RAC集群安装(七) 概述:写下本文档 ...
- JS 封装一个显示时间的函数
s(); function s (){ var mydate=new Date(); var y = mydate.getFullYear(); var m = mydate.getMonth(); ...
- C语言提高 (7) 第七天 回调函数 预处理函数DEBUG 动态链接库
链表就是一个结构体 指针指向自身结构体类型 双向链表插入的时候 先改变自身 再改变两边 双向链表删除的时候 先改变两边 再改变自己 逆序一个单向链表 回调函数 指向函数的指针 4链表的遍历回调用法 / ...
- C#常用 API函数大全
常用Windows API1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConne ...
- JAVA基础知识复习小结
集合 Set集合 Set集合的基本特征是元素不允许重复.HashSet不保存元素顺序,LinkedHashSet用链表保持元素的插入顺序,TreeSet可定制排序规则. HashSet的底层是用Has ...