Fragment

Activity

看下我实现的效果图这种真的特别常见点击左边的item替换右边的布局文件

MovieContent

package view.zm.com.wyimtest.bean;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** Created by zhengmin on 2017/1/11.*/
public class MoiveContent {//定义一个内部类,作为系统的业务对象public static class Movie {public Integer id;public String title;public String desc;public Movie(Integer id, String title, String desc) {this.id = id;this.title = title;this.desc = desc;}@Overridepublic String toString() {return title;}}//使用List集合记录系统所包含的Movie对象public static List<Movie> ITEMS = new ArrayList<>();//使用Map集合记录系统所包含的Movie对象public static Map<Integer, Movie> ITEM_MAP = new HashMap<>();static {//使用静态初始化代码,将Movie对象添加到List集合、Map集合中addItem(new Movie(1, "蒼井空", "这个程序员没呢应该都很清楚的哈"));addItem(new Movie(2, "波多野結衣", "这个宅男你们懂的哈哈"));addItem(new Movie(3, "咩亞洲", "老司机带带我,我得意的笑"));addItem(new Movie(4, "飞碟一分钟", "只是从未如此性感,飞碟一分钟开开心心"));addItem(new Movie(5, "锦绣未央", "代表月亮消灭您真的太美了哈"));addItem(new Movie(6, "七月与安生", "周冬雨与韩国欧巴一场美丽爱情的邂逅"));addItem(new Movie(7, "人在囧途", "王宝强之间的囧事真的好搞笑哈"));addItem(new Movie(8, "微微一笑很倾城", "杨洋与郑爽之间的甜蜜校园爱情"));addItem(new Movie(9, "猫与老鼠", "主要讲述Tom猫经常被Jaliy鼠整搞笑。"));addItem(new Movie(10, "美国队长3", "这部电影挺不错哦。"));addItem(new Movie(11, "放棄我抱緊我", "主要讲述王凯和乔任梁以及陈之间的三角恋中"));// addItem(new Movie(12, "那些年我们一起追过的女孩", "一本全面、深入的iOS学习书籍,從入門到搬磚。"));}private static void addItem(Movie movie) {ITEMS.add(movie);ITEM_MAP.put(movie.id, movie);}
}

MovieDetailFragment

package view.zm.com.wyimtest.fragment;import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import view.zm.com.wyimtest.R;
import view.zm.com.wyimtest.bean.MoiveContent;/*** Created by zhengmin on 2017/1/11.*/
public class MovieDetailFragment extends Fragment {public static final String ITEM_ID="item_id";private MoiveContent.Movie movie;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//如果启动该Fragment时包含了ITEM_ID参数if(getArguments().containsKey(ITEM_ID)){movie= MoiveContent.ITEM_MAP.get(getArguments().get(ITEM_ID));}}//重写该方法,该方法返回的View将作为Fragment显示的组件@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View rootView=inflater.inflate(R.layout.fragment_movie_detail,container,false);if(movie!=null){((TextView) rootView.findViewById(R.id.movie_title)).setText(movie.title);((TextView) rootView.findViewById(R.id.movie_desc)).setText(movie.desc);}return rootView;}
}

MovieListFragment

package view.zm.com.wyimtest.fragment;import android.app.Activity;
import android.app.ListFragment;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;import view.zm.com.wyimtest.bean.MoiveContent;/*** Created by zhengmin on 2017/1/11.*/
public class MovieListFragment extends ListFragment {private Callbacks    mCallbacks;//定义一个回调接口,该Fragment所在Activity需要实现该接口//该Fragment将通过该接口与它所在的Activity交互public interface Callbacks{public void onItemSelected(Integer id);}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//为该ListFragment设置adaptersetListAdapter(new ArrayAdapter<MoiveContent.Movie>(getActivity(),android.R.layout.simple_list_item_activated_1, MoiveContent.ITEMS));}//当该Fragment被添加、显示到Activity时,回调该方法@Overridepublic void onAttach(Activity activity) {super.onAttach(activity);//如果Activity没有实现Callbacks接口,抛出异常if(!(activity instanceof  Callbacks)){throw new IllegalArgumentException("BookList所在Activity实现CallBack");}//把该Activity当成Callbacks对象mCallbacks= (Callbacks) getActivity();}//当该Fragment从它所属的Activity中被删除时回调该方法@Overridepublic void onDetach() {super.onDetach();mCallbacks=null;}//当用户单击某列表时激发该回调方法@Overridepublic void onListItemClick(ListView l, View v, int position, long id) {super.onListItemClick(l, v, position, id);//激发mCallbacks的onItemSelected方法mCallbacks.onItemSelected(MoiveContent.ITEMS.get(position).id);}public void setActivateOnItemClick(boolean activateOnItemClick){getListView().setChoiceMode(activateOnItemClick?ListView.CHOICE_MODE_SINGLE:ListView.CHOICE_MODE_NONE);}
}

MainActivity

package view.zm.com.wyimtest;import android.app.Activity;
import android.os.Bundle;import view.zm.com.wyimtest.fragment.MovieDetailFragment;
import view.zm.com.wyimtest.fragment.MovieListFragment;public class MainActivity extends Activity implements MovieListFragment.Callbacks {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_movie_twopane);}@Overridepublic void onItemSelected(Integer id) {//创建Bundle对象准备向Fragment传参Bundle arguments=new Bundle();arguments.putInt(MovieDetailFragment.ITEM_ID,id);//创建MovieDetailFragment对象MovieDetailFragment movieDetailFragment =new MovieDetailFragment();//向fragment传参movieDetailFragment.setArguments(arguments);//使用fragment替换movie_detail_container容器当前显示的FragmentgetFragmentManager().beginTransaction().replace(R.id.movie_detail_container, movieDetailFragment).commit();}
}

activity_movie_twopane

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:divider="?android:attr/dividerHorizontal"android:orientation="horizontal"android:showDividers="middle"android:layout_marginLeft="16dp"android:layout_marginRight="16dp"android:layout_width="match_parent"android:layout_height="match_parent"><fragment
        android:id="@+id/movie_list"android:name="view.zm.com.wyimtest.fragment.MovieListFragment"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"/><FrameLayout
        android:id="@+id/movie_detail_container"android:layout_width="0dp"android:layout_weight="3"android:layout_height="match_parent"></FrameLayout></LinearLayout>

fragment_movie_detail

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent" android:layout_height="match_parent"android:orientation="vertical"android:padding="20dp">
<TextView
    android:id="@+id/movie_title"android:layout_width="match_parent"style="?android:attr/textAppearanceSmall"android:textSize="18sp"android:textColor="@color/colorPrimary"android:layout_height="wrap_content"android:padding="16dp"/><TextView
        android:id="@+id/movie_desc"style="?android:attr/textAppearanceSmall"android:layout_width="match_parent"android:textSize="18sp"android:gravity="center_horizontal"android:textColor="@color/colorAccent"android:layout_height="wrap_content"android:padding="16dp"/>
</LinearLayout>

今晚到这里到时在慢慢分析代码,好困转载请注明出处
http://blog.csdn.net/qq_15950325/article/details/54356243这里写链接内容
需要开车的直接加群

Fragment与Activity之间的完美邂逅相关推荐

  1. Android(Fragment和Activity之间通信)

    Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Acti ...

  2. 静态注册fragment_Fragment的静态和动态添加方式以及Fragment和Activity之间的通信方式...

    一.静态添加方式:创建好Fragment之后,在需要使用碎片的Activity的布局文件中添加 标签. 二.动态添加方式:先创建好fragment的布局文件,然后创建一个继承自Fragment的 类( ...

  3. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    [正文] 一.接口回调的简单引入: 我们先来看一个简单的接口回调的例子: 新建一个Java工程,然后新建一个包.然后新建一个A.java文件: A.java代码如下: 1 package com.cn ...

  4. fragment与activity之间的信息传递的两种方式

    因为Fragment和Activity一样是具有生命周期,不是一般的bean通过构造函数传值,会造成异常. fragment与activity之间的信息传递的两种方式: 1.第一种方式,也是最常用的方 ...

  5. Android Fragment和Activity之间的交互方式

    Android应用主要的UI框架:TabLayout+ViewPager+Fragment组合方式+宿主Activity 在这样的框架之下,就会涉及到很多控件的交互,fragment与activity ...

  6. Fragment与Activity之间的相互通信

    https://blog.csdn.net/u012702547/article/details/49786417 https://blog.csdn.net/carson_ho/article/de ...

  7. Android开发之旅-Fragment和Activity之间onCreateOptionsMenu的联系

    Fragment和Activity一样,可以重写onCreateOptionsMenu方法来设定自己的菜单,其实这两个地方使用onCreateOptionsMenu的目的和效果都是完全一样的,但是由于 ...

  8. Android笔记:Fragment与Activity之间的交互,onAttach,退出最后一个 fragment

    一.交互代码笔记: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28     private Log ...

  9. fragment与activity之间的通信

    1.直接在一个Fragment中调用另外一个Fragment中的方法 ContentFragment cf = (ContentFragment) getActivity() .getFragment ...

最新文章

  1. 跟着Rocskdb 学 存储引擎:读写链路的代码极致优化
  2. STL 队列queue
  3. java char 相等_Java程序员须知Java字符串的十大问题
  4. 机器学习【吴恩达|周志华|李宏毅|算法】清单 #收藏#
  5. python打乱list_超实用!每 30 秒学会一个 Python 小技巧,GitHub 标星 5300!
  6. StringBuilder的使用
  7. python同步两张数据表_Python 如何实现数据库表结构同步
  8. pycharm 配置设置远程调试【远程解释器】
  9. JavaScript-4函数
  10. Matlab自适应均线_基于MATLAB的自回归移动平均模型(ARMA)在股票预测中的应用
  11. Win系统 - NETSH WINSOCK RESET
  12. [转]伽利略卫星导航系统2019年7月14日起的宕机事件
  13. Virtual Vertex Muster9—3D渲染农场管理软件
  14. win10开机桌面图像获取
  15. OpenGL之纹理过滤的四种方式
  16. 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名)
  17. 简单高效记账本的具体操作方法
  18. WSL / WSL2 问题大全 及 解决方案
  19. 【C++】面试题目,整理自牛客网
  20. STC51烧录程序时序分析

热门文章

  1. 阿里java开发规范学习笔记 (V1.5华山版)
  2. 【转】Linux 虚拟内存
  3. 在未提供官方驱动的Windows平板上安装Win10且完美驱动的解决方案
  4. node JS獲取GPS_node学习笔记(三十八)
  5. gitee 链接报错
  6. java求方程的根运行图_Java程序设计(十四)----一个求一元二次方程根
  7. TP-LINK无线路由器配置解读
  8. 在Mac上安装goby
  9. 64位32位 java 浏览器_Java编程语言下 Selenium 驱动各个浏览器代码
  10. python爬表情包_【从零开始写爬虫一】批量下载表情包