• 在主Android Activity中加载Fragment的一般简易方法 ,来模拟一个微信界面。


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

     1 package com.lixu.fragment_test;
     2 
     3 import android.app.Activity;
     4 
     5 import android.app.FragmentManager;
     6 import android.app.FragmentTransaction;
     7 import android.os.Bundle;
     8 import android.view.View;
     9 import android.view.View.OnClickListener;
    10 import android.view.Window;
    11 import android.widget.ImageView;
    12 
    13 public class MainActivity extends Activity implements OnClickListener {
    14 
    15     @Override
    16     protected void onCreate(Bundle savedInstanceState) {
    17         super.onCreate(savedInstanceState);
    18         requestWindowFeature(Window.FEATURE_NO_TITLE);
    19         setContentView(R.layout.activity_main);
    20         //设置初始界面为“微信”。
    21         getweixn();
    22 
    23         ImageView iv1 = (ImageView) findViewById(R.id.iv1);
    24         ImageView iv2 = (ImageView) findViewById(R.id.iv2);
    25         ImageView iv3 = (ImageView) findViewById(R.id.iv3);
    26         ImageView iv4 = (ImageView) findViewById(R.id.iv4);
    27 
    28         iv1.setOnClickListener(this);
    29         iv2.setOnClickListener(this);
    30         iv3.setOnClickListener(this);
    31         iv4.setOnClickListener(this);
    32 
    33     }
    34 
    35     public void getweixn() {
    36         FragmentManager fm = this.getFragmentManager();
    37         FragmentTransaction ft = fm.beginTransaction();
    38         // 将原有的Activity替换成Fragment。也可以添加到原有之上不替换 如:ft.add(R.id.rel, new
    39         // Fragment()) ;如果添加的多了会比较耗资源。
    40         ft.replace(R.id.fl, new MyFragment1());
    41         // 提交
    42         ft.commit();
    43 
    44     }
    45 
    46     public void gettongxunlu() {
    47         //设置Fragment管理器
    48         FragmentManager fm = this.getFragmentManager();
    49         FragmentTransaction ft = fm.beginTransaction();
    50 
    51         ft.replace(R.id.fl, new MyFragment2());
    52 
    53         ft.commit();
    54 
    55     }
    56 
    57     public void getfaxian() {
    58         FragmentManager fm = this.getFragmentManager();
    59         FragmentTransaction ft = fm.beginTransaction();
    60 
    61         ft.replace(R.id.fl, new MyFragment3());
    62 
    63         ft.commit();
    64 
    65     }
    66 
    67     public void getwo() {
    68         FragmentManager fm = this.getFragmentManager();
    69         FragmentTransaction ft = fm.beginTransaction();
    70 
    71         ft.replace(R.id.fl, new MyFragment4());
    72 
    73         ft.commit();
    74 
    75     }
    76 
    77     @Override
    78     public void onClick(View v) {
    79         switch (v.getId()) {
    80         case R.id.iv1:
    81             getweixn();
    82             break;
    83         case R.id.iv2:
    84             gettongxunlu();
    85             break;
    86         case R.id.iv3:
    87             getfaxian();
    88             break;
    89         case R.id.iv4:
    90             getwo();
    91             break;
    92 
    93         default:
    94             break;
    95         }
    96     }
    97 
    98 }
     1 package com.lixu.fragment_test;
     2 
     3 
     4 import android.app.Fragment;
     5 import android.os.Bundle;
     6 
     7 import android.view.LayoutInflater;
     8 import android.view.View;
     9 import android.view.ViewGroup;
    10 import android.widget.ImageView;
    11 
    12 class MyFragment1 extends Fragment {
    13 
    14     @Override
    15     public void onCreate(Bundle savedInstanceState) {
    16         super.onCreate(savedInstanceState);
    17     }
    18 
    19     // 创建view   也可以直接在这里面获取view中的控件。
    20     @Override
    21     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    22 
    23         View view = inflater.inflate(R.layout.image, null);
    24 
    25         return view;
    26     }
    27 
    28     // 创建view完毕  可以直接在onCreateView中获取view中控件。
    29     @Override
    30     public void onViewCreated(View view, Bundle savedInstanceState) {
    31         super.onViewCreated(view, savedInstanceState);
    32 
    33         ImageView iv = (ImageView) view.findViewById(R.id.iv);
    34         iv.setImageResource(R.drawable.weixinjiemian);
    35     }
    36 }
      1 package com.lixu.fragment_test;
      2 
      3 import java.util.ArrayList;
      4 import java.util.HashMap;
      5 
      6 import android.app.Fragment;
      7 import android.content.Context;
      8 import android.graphics.Color;
      9 import android.os.Bundle;
     10 
     11 import android.view.LayoutInflater;
     12 import android.view.View;
     13 import android.view.ViewGroup;
     14 import android.widget.ArrayAdapter;
     15 import android.widget.ListView;
     16 import android.widget.TextView;
     17 
     18 class MyFragment2 extends Fragment {
     19     private static final String TYPE = "type";
     20     private static final String DATE = "date";
     21     private static final int GROUP = -1;
     22     private static final int ITEM = -2;
     23 
     24     private ArrayList<HashMap<String, Object>> item = null;
     25 
     26     @Override
     27     public void onCreate(Bundle savedInstanceState) {
     28         super.onCreate(savedInstanceState);
     29 
     30     }
     31 
     32     // 创建view
     33     @Override
     34     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     35 
     36         View view = inflater.inflate(R.layout.list, null);
     37 
     38         return view;
     39     }
     40 
     41     // 创建view完毕
     42     @Override
     43     public void onViewCreated(View view, Bundle savedInstanceState) {
     44         super.onViewCreated(view, savedInstanceState);
     45 
     46         ListView lv = (ListView) view.findViewById(R.id.lv);
     47         MyAdaper adapter = new MyAdaper(getActivity(), -1);
     48 
     49         item = new ArrayList<HashMap<String, Object>>();
     50 
     51         String[] groups = { "家人", "朋友", "同学", "同事" };
     52         String[] date = { "张三", "李四", "王五", "狗儿" };
     53         for (String str : groups) {
     54             HashMap<String, Object> group_map = new HashMap<String, Object>();
     55 
     56             group_map.put(TYPE, GROUP);
     57             group_map.put(DATE, str);
     58             item.add(group_map);
     59             for (String n : date) {
     60 
     61                 HashMap<String, Object> date_map = new HashMap<String, Object>();
     62 
     63                 date_map.put(TYPE, ITEM);
     64                 date_map.put(DATE, n);
     65                 item.add(date_map);
     66 
     67             }
     68 
     69         }
     70         lv.setAdapter(adapter);
     71     }
     72 
     73     private class MyAdaper extends ArrayAdapter {
     74         private LayoutInflater flater = null;
     75         private Context context;
     76 
     77         public MyAdaper(Context context, int resource) {
     78             super(context, resource);
     79             this.context = context;
     80             flater = LayoutInflater.from(context);
     81         }
     82 
     83         @Override
     84         public int getCount() {
     85             return item.size();
     86         }
     87 
     88         @Override
     89         public int getItemViewType(int position) {
     90             HashMap<String, Object> map = item.get(position);
     91             return (Integer) map.get(TYPE);
     92         }
     93 
     94         @Override
     95         public int getViewTypeCount() {
     96 
     97             return 2;
     98         }
     99 
    100         @Override
    101         public View getView(int position, View convertView, ViewGroup parent) {
    102             int type = getItemViewType(position);
    103             // 根据不同的view type加载不同的布局文件。
    104             switch (type) {
    105             case GROUP:
    106 
    107                 convertView = flater.inflate(android.R.layout.simple_list_item_1, null);
    108                 TextView tv1 = (TextView) convertView.findViewById(android.R.id.text1);
    109                 tv1.setText(item.get(position).get(DATE) + "");
    110                 tv1.setBackgroundColor(Color.RED);
    111                 tv1.setTextSize(20);
    112 
    113                 break;
    114             case ITEM:
    115                 convertView = flater.inflate(android.R.layout.simple_list_item_1, null);
    116                 TextView tv2 = (TextView) convertView.findViewById(android.R.id.text1);
    117                 tv2.setText(item.get(position).get(DATE) + "");
    118 
    119                 break;
    120 
    121             default:
    122                 break;
    123             }
    124 
    125             return convertView;
    126         }
    127 
    128     }
    129 }
     1 package com.lixu.fragment_test;
     2 
     3 
     4 import android.app.Fragment;
     5 import android.os.Bundle;
     6 
     7 import android.view.LayoutInflater;
     8 import android.view.View;
     9 import android.view.ViewGroup;
    10 import android.widget.ImageView;
    11 
    12 class MyFragment3 extends Fragment {
    13 
    14     @Override
    15     public void onCreate(Bundle savedInstanceState) {
    16         super.onCreate(savedInstanceState);
    17     }
    18 
    19     // 创建view
    20     @Override
    21     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    22 
    23         View view = inflater.inflate(R.layout.image, null);
    24 
    25         return view;
    26     }
    27 
    28     // 创建view完毕
    29     @Override
    30     public void onViewCreated(View view, Bundle savedInstanceState) {
    31         super.onViewCreated(view, savedInstanceState);
    32 
    33         ImageView iv = (ImageView) view.findViewById(R.id.iv);
    34         iv.setImageResource(R.drawable.faxianjiemian);
    35     }
    36 }
     1 package com.lixu.fragment_test;
     2 
     3 
     4 import android.app.Fragment;
     5 import android.os.Bundle;
     6 
     7 import android.view.LayoutInflater;
     8 import android.view.View;
     9 import android.view.ViewGroup;
    10 import android.widget.ImageView;
    11 
    12 class MyFragment4 extends Fragment {
    13 
    14     @Override
    15     public void onCreate(Bundle savedInstanceState) {
    16         super.onCreate(savedInstanceState);
    17     }
    18 
    19     // 创建view
    20     @Override
    21     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    22 
    23         View view = inflater.inflate(R.layout.image, null);
    24 
    25         return view;
    26     }
    27 
    28     // 创建view完毕
    29     @Override
    30     public void onViewCreated(View view, Bundle savedInstanceState) {
    31         super.onViewCreated(view, savedInstanceState);
    32 
    33         ImageView iv = (ImageView) view.findViewById(R.id.iv);
    34         iv.setImageResource(R.drawable.wojiemian);
    35     }
    36 }

    xml文件:

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:id="@+id/LinearLayout1"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:orientation="vertical"
     7     tools:context="com.lixu.fragment_test.MainActivity" >
     8 
     9     <FrameLayout
    10         android:id="@+id/fl"
    11         android:layout_width="match_parent"
    12         android:layout_height="wrap_content"
    13         android:layout_weight="1" >
    14     </FrameLayout>
    15 
    16     <LinearLayout
    17         android:id="@+id/linearlayout"
    18         android:layout_width="wrap_content"
    19         android:layout_height="wrap_content"
    20         android:orientation="horizontal" >
    21 
    22         <ImageView
    23             android:id="@+id/iv1"
    24             android:layout_width="90dp"
    25             android:layout_height="60dp"
    26             android:layout_weight="1"
    27             android:background="@drawable/weixin" />
    28 
    29         <ImageView
    30             android:id="@+id/iv2"
    31             android:layout_width="90dp"
    32             android:layout_height="60dp"
    33             android:layout_weight="1"
    34             android:background="@drawable/tongxunlu" />
    35 
    36         <ImageView
    37             android:id="@+id/iv3"
    38             android:layout_width="90dp"
    39             android:layout_height="60dp"
    40             android:layout_weight="1"
    41             android:background="@drawable/faxian" />
    42 
    43         <ImageView
    44             android:id="@+id/iv4"
    45             android:layout_width="90dp"
    46             android:layout_height="60dp"
    47             android:layout_weight="1"
    48             android:background="@drawable/wo" />
    49     </LinearLayout>
    50 
    51 </LinearLayout>
    1 <?xml version="1.0" encoding="utf-8"?>
    2 <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    3     android:id="@+id/iv"
    4     android:layout_width="match_parent"
    5     android:layout_height="match_parent" >
    6 
    7 </ImageView>
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6 
     7     <ListView
     8         android:id="@+id/lv"
     9         android:layout_width="match_parent"
    10         android:layout_height="match_parent" >
    11     </ListView>
    12 
    13 </LinearLayout>

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

  • 相关阅读:
    设计模式-策略模式
    设计模式-建造者模式
    js助手函数
    Javascript使用函数做命名空间
    腾讯云scf云函数,python依赖安装与上传的正确姿势
    nodejs爬虫,服务器经常返回ECONNRESET或者socket hang up错误的解决方法
    http请求,服务器回复内容为乱码的一种可能解决方法
    js在动态定义的新对象中,属性为变量时,如何动态定义
    nodejs中使用request时出现unable to verify the first certificate的一种解决办法
    Ubuntu偶然出现在待机解锁时,密码输入肯定正确但却无法进入的一种可能性
  • 原文地址:https://www.cnblogs.com/labixiaoxin/p/4981444.html
Copyright © 2020-2023  润新知