zoukankan      html  css  js  c++  java
  • Android Fragment初探:静态Fragment组成Activity

    一直习惯了在Activity中写所有事件处理代码,直到认真学习Fragment时,才发现,Activity完全可以由多个Fragment组成。

    对Fragment的了解还不够深入,先从静态Fragment开始练习,把Fragment当成单纯的Activity控件。

    就来写一个最常用的“标题+正文”布局吧!

    activity_main.xml:

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2                 xmlns:tools="http://schemas.android.com/tools"
     3                 android:layout_width="match_parent"
     4                 android:layout_height="match_parent"
     5                 tools:context=".MainActivity">
     6 
     7     <fragment
     8         android:id="@+id/fragment_title"
     9         android:name="com.example.hopecapital.myapplication.TitleFragment"
    10         android:layout_width="fill_parent"
    11         android:layout_height="45dp" />
    12 
    13     <fragment
    14         android:layout_below="@id/fragment_title"
    15         android:id="@+id/id_fragment_content"
    16         android:name="com.example.hopecapital.myapplication.ContentFragment"
    17         android:layout_width="fill_parent"
    18         android:layout_height="fill_parent" />
    19 
    20 </RelativeLayout>

    主界面的布局,需要写上用到的fragment,并规定好他们的位置。

    MainActivity.java:

     1 package com.example.hopecapital.myapplication;
     2 
     3 import android.app.Activity;
     4 import android.os.Bundle;
     5 
     6 
     7 public class MainActivity extends Activity {
     8 
     9     @Override
    10     protected void onCreate(Bundle savedInstanceState) {
    11         super.onCreate(savedInstanceState);
    12         setContentView(R.layout.activity_main);
    13     }
    14 
    15 }

    这里只需要加载布局即可。

    接下来是两个fragment的布局和java代码。

    fragment_title.xml:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3                 android:layout_width="match_parent"
     4                 android:layout_height="45dp">
     5 
     6     <ImageButton
     7         android:id="@+id/btn_menu"
     8         android:layout_width="wrap_content"
     9         android:layout_height="wrap_content"
    10         android:layout_centerVertical="true"
    11         android:layout_marginLeft="3dp"
    12         android:background="@mipmap/ic_launcher" />
    13 
    14     <TextView
    15         android:layout_width="fill_parent"
    16         android:layout_height="fill_parent"
    17         android:gravity="center"
    18         android:text="标题"
    19         android:textSize="20sp"
    20         android:textStyle="bold" />
    21 
    22 </RelativeLayout>

    TitleFragment.java:

     1 package com.example.hopecapital.myapplication;
     2 
     3 import android.app.Fragment;
     4 import android.os.Bundle;
     5 import android.view.LayoutInflater;
     6 import android.view.View;
     7 import android.view.ViewGroup;
     8 import android.widget.ImageButton;
     9 import android.widget.Toast;
    10 
    11 public class TitleFragment extends Fragment {
    12     private ImageButton Menu;
    13 
    14     @Override
    15     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    16                              Bundle savedInstanceState){
    17         View view = inflater.inflate(R.layout.fragment_title,container,false);
    18         Menu = (ImageButton)view.findViewById(R.id.btn_menu);
    19 
    20         Menu.setOnClickListener(new View.OnClickListener() {
    21             @Override
    22             public void onClick(View v) {
    23 
    24                 Toast.makeText(getActivity(),"titleFragment!",Toast.LENGTH_SHORT).show();
    25             }
    26         });
    27         return view;
    28     }
    29 }

    fragment_content.xml:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3                 android:layout_width="match_parent"
     4                 android:layout_height="match_parent">
     5 
     6     <TextView
     7         android:layout_width="match_parent"
     8         android:layout_height="match_parent"
     9         android:gravity="center"
    10         android:text="正文区域"
    11         android:textSize="20sp" />
    12 
    13 </RelativeLayout>

    ContentFragment.java:

     1 package com.example.hopecapital.myapplication;
     2 
     3 
     4 import android.app.Fragment;
     5 import android.os.Bundle;
     6 import android.view.LayoutInflater;
     7 import android.view.View;
     8 import android.view.ViewGroup;
     9 
    10 
    11 /**
    12  * A simple {@link Fragment} subclass.
    13  */
    14 public class ContentFragment extends Fragment {
    15 
    16 
    17     public ContentFragment() {
    18         // Required empty public constructor
    19     }
    20 
    21 
    22     @Override
    23     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    24                              Bundle savedInstanceState) {
    25         return inflater.inflate(R.layout.fragment_content,container,false);
    26     }
    27 
    28 
    29 }

    至此,Activity由两部分Fragment分别控制,需要改哪里直接找对应Fragment即可。

    ————————————————————————————————————————————————
    来自企鹅娘的问候:
    欢迎交流哦,如果有帮助转载的话,请务必注明出处"企鹅娘's 学习笔记",让我也小小的开心一下
  • 相关阅读:
    macOS10.9+xcode6编译ffmpeg2.4.2 for ios
    [think in java]第12章 通过异常处理错误
    机房合作感受
    LeetCode 210. Course Schedule II(拓扑排序-求有向图中是否存在环)
    Java继承
    jQuery学习笔记之DOM操作、事件绑定(2)
    intellij IDEA常见操作
    log4j.properties配置详解
    jQuery学习笔记之概念(1)
    VC常用代码之创建进程
  • 原文地址:https://www.cnblogs.com/hopecapital/p/4673358.html
Copyright © 2011-2022 走看看