在Fragment的生命周期中,需要重点关注onCreate、onCreateView、onViewCreated。Activity与Fragment生命周期在设计模式上大体一致。

 package com.lixu.fragment_test;

 import android.app.Activity;

 import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//设置初始界面为“微信”。
getweixn(); ImageView iv1 = (ImageView) findViewById(R.id.iv1);
ImageView iv2 = (ImageView) findViewById(R.id.iv2);
ImageView iv3 = (ImageView) findViewById(R.id.iv3);
ImageView iv4 = (ImageView) findViewById(R.id.iv4); iv1.setOnClickListener(this);
iv2.setOnClickListener(this);
iv3.setOnClickListener(this);
iv4.setOnClickListener(this); } public void getweixn() {
FragmentManager fm = this.getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
// 将原有的Activity替换成Fragment。也可以添加到原有之上不替换 如:ft.add(R.id.rel, new
// Fragment()) ;如果添加的多了会比较耗资源。
ft.replace(R.id.fl, new MyFragment1());
// 提交
ft.commit(); } public void gettongxunlu() {
//设置Fragment管理器
FragmentManager fm = this.getFragmentManager();
FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.fl, new MyFragment2()); ft.commit(); } public void getfaxian() {
FragmentManager fm = this.getFragmentManager();
FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.fl, new MyFragment3()); ft.commit(); } public void getwo() {
FragmentManager fm = this.getFragmentManager();
FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.fl, new MyFragment4()); ft.commit(); } @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv1:
getweixn();
break;
case R.id.iv2:
gettongxunlu();
break;
case R.id.iv3:
getfaxian();
break;
case R.id.iv4:
getwo();
break; default:
break;
}
} }
 package com.lixu.fragment_test;

 import android.app.Fragment;
import android.os.Bundle; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView; class MyFragment1 extends Fragment { @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} // 创建view 也可以直接在这里面获取view中的控件。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.image, null); return view;
} // 创建view完毕 可以直接在onCreateView中获取view中控件。
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); ImageView iv = (ImageView) view.findViewById(R.id.iv);
iv.setImageResource(R.drawable.weixinjiemian);
}
}
 package com.lixu.fragment_test;

 import java.util.ArrayList;
import java.util.HashMap; import android.app.Fragment;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView; class MyFragment2 extends Fragment {
private static final String TYPE = "type";
private static final String DATE = "date";
private static final int GROUP = -1;
private static final int ITEM = -2; private ArrayList<HashMap<String, Object>> item = null; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); } // 创建view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.list, null); return view;
} // 创建view完毕
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); ListView lv = (ListView) view.findViewById(R.id.lv);
MyAdaper adapter = new MyAdaper(getActivity(), -1); item = new ArrayList<HashMap<String, Object>>(); String[] groups = { "家人", "朋友", "同学", "同事" };
String[] date = { "张三", "李四", "王五", "狗儿" };
for (String str : groups) {
HashMap<String, Object> group_map = new HashMap<String, Object>(); group_map.put(TYPE, GROUP);
group_map.put(DATE, str);
item.add(group_map);
for (String n : date) { HashMap<String, Object> date_map = new HashMap<String, Object>(); date_map.put(TYPE, ITEM);
date_map.put(DATE, n);
item.add(date_map); } }
lv.setAdapter(adapter);
} private class MyAdaper extends ArrayAdapter {
private LayoutInflater flater = null;
private Context context; public MyAdaper(Context context, int resource) {
super(context, resource);
this.context = context;
flater = LayoutInflater.from(context);
} @Override
public int getCount() {
return item.size();
} @Override
public int getItemViewType(int position) {
HashMap<String, Object> map = item.get(position);
return (Integer) map.get(TYPE);
} @Override
public int getViewTypeCount() { return 2;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
// 根据不同的view type加载不同的布局文件。
switch (type) {
case GROUP: convertView = flater.inflate(android.R.layout.simple_list_item_1, null);
TextView tv1 = (TextView) convertView.findViewById(android.R.id.text1);
tv1.setText(item.get(position).get(DATE) + "");
tv1.setBackgroundColor(Color.RED);
tv1.setTextSize(20); break;
case ITEM:
convertView = flater.inflate(android.R.layout.simple_list_item_1, null);
TextView tv2 = (TextView) convertView.findViewById(android.R.id.text1);
tv2.setText(item.get(position).get(DATE) + ""); break; default:
break;
} return convertView;
} }
}
 package com.lixu.fragment_test;

 import android.app.Fragment;
import android.os.Bundle; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView; class MyFragment3 extends Fragment { @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} // 创建view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.image, null); return view;
} // 创建view完毕
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); ImageView iv = (ImageView) view.findViewById(R.id.iv);
iv.setImageResource(R.drawable.faxianjiemian);
}
}
 package com.lixu.fragment_test;

 import android.app.Fragment;
import android.os.Bundle; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView; class MyFragment4 extends Fragment { @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} // 创建view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.image, null); return view;
} // 创建view完毕
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); ImageView iv = (ImageView) view.findViewById(R.id.iv);
iv.setImageResource(R.drawable.wojiemian);
}
}

xml文件:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.lixu.fragment_test.MainActivity" > <FrameLayout
android:id="@+id/fl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
</FrameLayout> <LinearLayout
android:id="@+id/linearlayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" > <ImageView
android:id="@+id/iv1"
android:layout_width="90dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/weixin" /> <ImageView
android:id="@+id/iv2"
android:layout_width="90dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/tongxunlu" /> <ImageView
android:id="@+id/iv3"
android:layout_width="90dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/faxian" /> <ImageView
android:id="@+id/iv4"
android:layout_width="90dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/wo" />
</LinearLayout> </LinearLayout>
 <?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent" > </ImageView>
 <?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" > <ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView> </LinearLayout>

运行效果图,演示为主,效果为辅,图片有点不真实,哈哈。

在主Android Activity中加载Fragment的一般简易方法 ,来模拟一个微信界面。的更多相关文章

  1. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(一)

    Android ViewPager 中加载 Fragmenet的两种方式 一.当fragment里面的内容较少时,直接 使用fragment xml布局文件填充 文件总数 布局文件:view_one. ...

  2. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)

    接上文: https://www.cnblogs.com/wukong1688/p/10693338.html Android ViewPager 中加载 Fragmenet的两种方式 方式(一) 二 ...

  3. 通过Activity动态加载Fragment创建主界面构架

    在做项目中,需要建立一个主界面框架,尝试过使用ViewPager ,后来又换成了使用Activity动态加载Fragment实现选项卡的效果.总结一下方便以后回顾. 先给出总体效果: 要实现上述效果, ...

  4. Android Activity的加载模式和onActivityResult方法之间的冲突

    前言 今天在调试程序时,发现在某一Activity上点击返回键会调用该Activity的onActivityResult()方法.我一开始用log,后来用断点跟踪调试半天,还是百思不得其解.因为之前其 ...

  5. Android Activity的加载的模式

    ---恢复内容开始--- 本文来自http://www.cnblogs.com/lwbqqyumidi/p/3771542.html launchMode在多个Activity跳转的过程中扮演着重要的 ...

  6. 如何在HTML中加载Flash(2种实现方法)_HTML/Xhtml_网页制作

    点评:如何在HTML中加载Flash,为网页添加更多的色彩,普通的网页以无法满足用户的需求,接下来为大家介绍下2种在HTML中加载Flash的方法,感兴趣的各位可以适当参考下,希望对你有所帮助 第一种 ...

  7. [转]Android Activity的加载模式和onActivityResult方法之间的冲突

    前言 今天在调试程序时,发现在某一Activity上点击返回键会调用该Activity的onActivityResult()方法.我一开始用log,后来用断点跟踪调试半天,还是百思不得其解.因为之前其 ...

  8. React Native中加载指示器组件ActivityIndicator使用方法

    这里讲一下React Native中的一个组件——ActivityIndicator,这是一个加载指示器,俗称菊花,很常见的,效果如下所示: 可以看到图中有两个加载指示器,一大一小,这是尺寸不是我设置 ...

  9. 关于spring MVC中加载多个validator的方法。

    首先讲下什么叫做validator: validator是验证器,可以验证后台接受的数据,对数据做校验. SpringMVC服务器验证有两种方式,一种是基于Validator接口,一种是使用Annot ...

随机推荐

  1. C# 计算传入的时间距离今天的时间差

    /// <summary> /// 计算传入的时间距离今天的时间差 /// </summary> /// <param name="dt">&l ...

  2. C语言宏定义中的#和##的作用【转】

    本文转载自:http://my.oschina.net/shelllife/blog/123202 在宏定义中#和##的作用是:前者将宏定义的变量转化为字符串:后者将其前后的两个宏定义中的两个变量无缝 ...

  3. (转)MyBatis & MyBatis Plus

    (二期)3.mybatis与mybatis plus [课程三]mybatis ...运用.xmind0.1MB [课程三]mybatis...机制.xmind0.2MB [课程三]mybatis与j ...

  4. [不屈的复习] - http://how2j.cn/

    http://how2j.cn/ 该教程网站分得比较规整!

  5. Ubuntu 下 su:authentication failure的解决办法

    Ubuntu下使用 su 切换到超级用户时候遇到下面的问题 su: Authentication failure 解决办法: $ sudo passwd root Enter new UNIX pas ...

  6. POJ 3164 Command Network(最小树形图模板题+详解)

    http://poj.org/problem?id=3164 题意: 求最小树形图. 思路: 套模板. 引用一下来自大神博客的讲解:http://www.cnblogs.com/acjiumeng/p ...

  7. UVa 1451 平均值

    https://vjudge.net/problem/UVA-1451 题意:给定长度为n的01串,选一个长度至少为L的连续子串,使得子串中数字的平均值最大. 思路:这题需要数形结合,真的是很灵活. ...

  8. MVC ---- 增删改成 EF6

    1.MVC EF6的增删改成小练习 namespace T4Demo { public partial class Form1 : Form { NBEntities nb = new NBEntit ...

  9. C# string[]转List<string>

    List<string> ltProduct = new List<string>(Product.Split('|'));

  10. vuex到底是个啥

    vuex总结 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的 ...