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 ...
随机推荐
- Windows 下修改 MySQL 编码为 utf8
问题 Windows 下安装 MySQL 后,默认编码不全utf8. mysql> show variables like '%char%'; +------------------------ ...
- (转)基于MVC4+EasyUI的Web开发框架经验总结(3)- 使用Json实体类构建菜单数据
http://www.cnblogs.com/wuhuacong/p/3669708.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...
- Asp.net Core 源码-SessionExtensions
using Microsoft.AspNetCore.Http; using Newtonsoft.Json; namespace SportsStore.Infrastructure { publi ...
- Integer Intervals POJ - 1716_查分约束_
Code: #include<cstdio> #include<queue> #include<algorithm> using namespace std; co ...
- Ubuntu Server 与 Ubuntu Desktop区别
今天有位朋友问我,Ubuntu Server 与 Ubuntu Desktop的区别在哪里!区别如下: SERVER没有GUI SERVER没有一堆的桌面软件 SERVER在编译时使用的参数不一样,会 ...
- Bash 如何取得当前正在执行的脚本的绝对路径?
转自:http://blogread.cn/it/article/6549?f=wb Bash 如何取得当前正在执行的脚本的绝对路径? 如题,一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无 ...
- P1828 香甜的黄油 Sweet Butter (spfa)
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- 微信公众号开发之获取微信用户的openID
(注:openID同一用户同一应用唯一,UnionID同一用户不同应用唯一.不同应用指微信开放平台下的不同用户.) 1. 申请测试号(获得appID.appsecret) 2. 填写服务器配置并验 ...
- 【hdu 4135】Co-prime
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=4135 [题意] 让你求出[a..b]这个区间内和N互质的数的个数; [题解] 利用前缀和,求出[1 ...
- PHP学习总结(6)——PHP入门篇之PHP语句结束符
PHP语句结束符 有的小伙伴们是不是已经注意在每一条PHP代码行结尾处都会有一个分号:.对的,这点注意,在PHP编程中需要在每条语句的末尾加入分号:.但要注意,分号:一定在半角状态下输入噢.