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 ...
随机推荐
- RN配置
Write by lz: 详细参考官方网址: http://reactnative.cn/docs/0.43/getting-started.html#content 若是无法安装 Chocolate ...
- Python 之 基础知识(四)
一.公共方法(列表.元组.字典以及字符串) 1.内置函数 cmp函数取消可以用比较运算符来代替,但是字典是无序的,故而不可以用比较运算符比较. 2.切片(列表.元组.字符串适用) 3.运算符 列表中直 ...
- 基于连接的Java网络编程
实现了基于TCP的Java Socket编程,功能很简单:客户端向服务器端输出一名话"connect",服务器端接收输出到控制台并向客户端输出一名话"Hello" ...
- PCL:解决PCL和OpenCV冲突的方法
不是PCL的问题,而是OpenCV的问题. (1):先包含PCL库,再包含OpenCV库: (2):把里面的UCHAR冲突全部换掉! 如果你有闲情逸致,用正则表达式 慢慢替换去吧! (3):或者把F ...
- java学习笔记3——异或
异或原理: 转换两个字符或数为2进制的ASCII码,再按位异或,即 0001 0001 ---> 0000 0000 0000 ---> 0000 0001 0000 ---> 00 ...
- python django整理(五)配置favicon.ico,解决警告Not Found: /favicon.ico(转载)
版权声明:本文为博主原创文章,欢迎交流分享,未经博主允许不得转载. https://blog.csdn.net/HHTNAN/article/details/78549561 Django 浏览器打开 ...
- Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置
0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...
- 训练1-T
一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数.求所有小于等于N的与7无关的正整数的平方和. 例如:N = 8,<= 8与7无关的数包括:1 2 ...
- nyoj312-20岁生日
20岁生日 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 路过这的20岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达20岁生日时所经 ...
- Linux安装expect命令
[Linux安装expect命令]:--expect是在Tcl基础上创建起来的,所以在安装expect前我们应该先安装Tcl.①:tcl安装源码下载:http://www.tcl.tk/softwar ...