Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
AndroidÓ¦Óþ­µäÖ÷½çÃæ¿ò¼ÜÖ®Ò»:·ÂQQ
 
×÷Õߣºyanzi1225627µÄ²©¿Í£¬À´Ô´£ºCSDN ·¢²¼ÓÚ£º 2014-12-4
  7408  次浏览      27
 

×î½ü·´¸´Ñо¿ÈÕ³£¾­µä±ØÓõöandroid app£¬´ÓÖ÷½çÃæ´øÀ´µÄ½»»¥·½Ê½ÈëÊÖ½øÐзÖÎö£¬ÎÒ½«Æä´óÖ·ÖΪÈýÀà¡£½ñÌì¼Ç¼µÚÒ»ÖÖ·½Ê½£¬¼´Ö÷½çÃæÏÂÃæÓм¸¸ötabÒ³£¬×îÉ϶ËÊDZêÌâÀ¸£¬tabÒ³ºÍtabÒ³Ö®¼ä²»ÊÇͨ¹ý»¬¶¯Çл»µÄ£¬¶øÊÇͨ¹ýµã»÷Çл»tabÒ³¡£ÔçÆÚÕâÖּܹ¹Ò»Ö±ÊÇʹÓÃtabhost+activitygroupÀ´Ê¹Óã¬Ëæ×ÅfragmentµÄ³öÏÖ¼°google¹Ù·½Ò²´óÁ¦ÍƼöʹÓÃfragment£¬ºóÕß´óÓдúÌæÇ°ÕßÖ®ÊÆ¡£±¾ÎÄҲʹÓÃfragment½øÐд£¬±êÌâÖеġ°¾­µä¡±Ö¸ÕâÖÖ½»»¥¾­µä£¬·Ç±¾ÎĵĴúÂë¿ò¼Ü½á¹¹£¬»¶Ó­´ó¼ÒÌá³öÖ¸³ö²»×㣬°ïÖúÍêÉÆ¡£ÎÄÖеÄfragment²¿·Ö²Î¿¼Á˹ùÉñµÄ²©ÎÄ(Á´½Ó1 Á´½Ó2 Á´½Ó3)£¬´úÂëÒ²ÊÇÔÚ¹ùÉñ´úÂë»ù´¡ÉϼÓÈëÁË×Ô¼º¶Ô¿ò¼ÜµÄÀí½â¡£

ÔÙ´ÎÖØÉêÏÂÕâÖÖÖ÷½çÃæ½»»¥µÄÌØµã:1,¶à¸ötab£¬²»ÄÜ»¬¶¯Çл»Ö»Äܵã»÷Çл»£»2£¬ÉÏÓбêÌâÀ¸¡£ÕâÖÖģʽҲÊÇĿǰappÖÐʹÓÃ×î¶àµÄ¡£Èçqq¡¢°Ù¶ÈÔÆÅÌ¡¢ÕÐÉÌÒøÐС¢Î¢²©¡¢Ö§¸¶±¦¡£¼¸¸öÔÂǰ֧¸¶±¦»¹ÊÇÄÜ»¬¶¯Çл»µÄ£¬ºóÀ´È¡ÏûÁË¡£ÊÓͼÈçÏÂ:

ÏÂÃæ±¾ÎĴӵײ¿¿ØÖÆÀ¸¡¢¶¥²¿¿ØÖÆÀ¸¼°ÖмäµÄÄÚÈÝÏÔÊ¾ÔØÌåfragmentÈý²¿·ÖÐðÊö¡£

Ò»¡¢µ×²¿¿ØÖÆÀ¸

µ×²¿¿ØÖÆÀ¸Àïÿ¸ö¿Ø¼þ¶¼²»Êǵ¥Ò»»ù´¡¿Ø¼þ£¬ÉÏÃæÊÇͼƬ¡¢ÏÂÃæÊÇÎÄ×Ö£¬ÓÒÉϽÇÊǺìµã£¬µ±ÓиüÐÂʱºìµãÏÔʾ£¬·ñÔòÒþ²Ø¡£ÁíÍâÏñqqµÄÓÒÉϽǻ¹ÄÜÏÔʾδ¶ÁÏûÏ¢µÄ¸öÊý£¬ÎҵIJο¼Á´½ÓÀïÊÇͨ¹ý´óÁ¿µÄlayoutÒ»µãÒ»µã´î³öÀ´µÄ£¬ÕâÑùµÄºÃ´¦ÊÇ·½±ã¿ØÖƱȽÏÖ±¹Û£¬ÁíÍâÊÇ¿ÉÒÔÀûÓÃLinearlayoutÀïµÄlayout_weightÕâ¸öÊôÐÔ£¬Èõײ¿µÄÕâЩitem¾ùÔÈ·Ö²¼£¬È±µãÊÇ´úÂëÉÏÓкܶàÖØ¸´£¬Î¬»¤ÆðÀ´²»·½±ã¡£¼ÈÈ»ÊÇÕûÀíappµÄͨÓÃÄ£°å¿ò¼Ü£¬Òò´ËÎÒ½«Ã¿¸öitemÊÓΪһ¸ö¶ÔÏó£¬È»ºó½«Æä·ÅÔڵײ¿¾ÍokÁË¡£±¾´úÂëÀïÖ»·â×°ÁËÉÏÃæÊÇͼƬÏÂÃæÊÇÎÄ×Ö£¬ÓÒÉϽǵĺìµãôÓзâ×°½øÀ´¡£

ImageText.java¾Í×÷ÁËÕâÑùÒ»¼þÊÂ:

<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.ui;  
package org.yanzi.ui;  
import org.yanzi.constant.Constant;  
import android.content.Context;  
import android.graphics.Color;  
import android.util.AttributeSet;  
import android.view.LayoutInflater;  
import android.view.MotionEvent;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ImageView;  
import android.widget.LinearLayout;  
import android.widget.TextView;  
import com.example.fragmentproject.R;  
public class ImageText extends LinearLayout{  
    private Context mContext = null;  
    private ImageView mImageView = null;  
    private TextView mTextView = null;  
    private final static int DEFAULT_IMAGE_WIDTH = 64;  
    private final static int DEFAULT_IMAGE_HEIGHT = 64;  
    private int CHECKED_COLOR = Color.rgb(29, 118, 199); //Ñ¡ÖÐÀ¶É«
    private int UNCHECKED_COLOR = Color.GRAY;   //×ÔÈ»»ÒÉ«  
    public ImageText(Context context) {  
        super(context);  
        // TODO Auto-generated constructor stub  
        mContext = context;  
    }  
  
    public ImageText(Context context, AttributeSet attrs) {  
        super(context, attrs);  
        // TODO Auto-generated constructor stub  
        mContext = context;  
        LayoutInflater inflater = (LayoutInflater) 
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  View parentView = inflater.inflate
(R.layout.image_text_layout, this, true);  
  mImageView = (ImageView)findViewById(R.id.image_iamge_text);  
        mTextView = (TextView)findViewById(R.id.text_iamge_text);  
    }  
    public void setImage(int id){  
        if(mImageView != null){  
            mImageView.setImageResource(id);  
    setImageSize(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT);  
        }  
    }  
  
    public void setText(String s){  
        if(mTextView != null){  
            mTextView.setText(s);  
            mTextView.setTextColor(UNCHECKED_COLOR);  
        }  
    }  
  
    @Override  
    public boolean onInterceptTouchEvent(MotionEvent ev) {  
        // TODO Auto-generated method stub  
        return true;  
    }  
    private void setImageSize(int w, int h){  
        if(mImageView != null){  
    ViewGroup.LayoutParams params = mImageView.getLayoutParams();
            params.width = w;  
            params.height = h;  
            mImageView.setLayoutParams(params);  
        }  
    }  
    public void setChecked(int itemID){  
        if(mTextView != null){  
            mTextView.setTextColor(CHECKED_COLOR);  
        }  
        int checkDrawableId = -1;  
        switch (itemID){  
        case Constant.BTN_FLAG_MESSAGE:  
            checkDrawableId = R.drawable.message_selected;  
            break;  
        case Constant.BTN_FLAG_CONTACTS:  
            checkDrawableId = R.drawable.contacts_selected;  
            break;  
        case Constant.BTN_FLAG_NEWS:  
            checkDrawableId = R.drawable.news_selected;  
            break;  
        case Constant.BTN_FLAG_SETTING:  
            checkDrawableId = R.drawable.setting_selected;  
            break;  
        default:break;  
        }  
        if(mImageView != null){  
            mImageView.setImageResource(checkDrawableId);  
        }  
    }  
}   
</span> 

¶ÔÓ¦µÄ²¼¾Ö:

<span style="font-family:Comic Sans MS;font-size:18px;"><?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" >
<ImageView
android:id="@+id/image_iamge_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />

<TextView
android:id="@+id/text_iamge_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />

</LinearLayout></span>

´úÂëÀïÓõ½ÁËConstant.java£¬ÕâÀïÃæ·ÅµÄ¶¼Êdz£Á¿£º

<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.constant;  
public class Constant {
//BtnµÄ±êʶ
public static final int BTN_FLAG_MESSAGE = 0x01;
public static final int BTN_FLAG_CONTACTS = 0x01 << 1;
public static final int BTN_FLAG_NEWS = 0x01 << 2;
public static final int BTN_FLAG_SETTING = 0x01 << 3;

//FragmentµÄ±êʶ
public static final String FRAGMENT_FLAG_MESSAGE = "ÏûÏ¢";
public static final String FRAGMENT_FLAG_CONTACTS = "ÁªÏµÈË";
public static final String FRAGMENT_FLAG_NEWS = "ÐÂÎÅ";
public static final String FRAGMENT_FLAG_SETTING = "ÉèÖÃ";
public static final String FRAGMENT_FLAG_SIMPLE = "simple";
}
</span>

µÚÒ»ÅÅÊǸ´ºÏButtonµÄ±êʶ£¬ÏÂÃæµÄstringÀàÐ͵ÄÊǽ«À´´´½¨fragmentµÄ±êʶ¡£

Íê³ÉÁËImageTextÖ®ºó£¬ÏÂÃæ¾ÍÊǽ«4¸öÕâÑùµÄ¿Ø¼þ·Åµ½Ò»¸ö²¼¾ÖÀΪÁË¿ØÖÆ·½±ã£¬ÎÒÃǽ«µ×²¿À¸³éÏóΪһ¸ö¶ÔÏóBottomControlPanel.java£¬ÕâÑùÔÚά»¤µ×²¿À¸Ïà¹ØÄÚÈÝʱֱ½ÓÕÒËû¾ÍÐÐÁË¡£BottomControlPanel¼Ì³Ð×ÔRelativeLayout£¬ÏÈÀ´¿´ËüµÄ²¼¾Ö:

bottom_panel_layout.xml

<span style="font-family:Comic Sans MS;font-size:18px;">
<?xml version="1.0" encoding="utf-8"?>  
<org.yanzi.ui.BottomControlPanel xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:gravity="center_vertical"
android:paddingLeft="20dp"
android:paddingRight="20dp" >

<org.yanzi.ui.ImageText
android:id="@+id/btn_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true" />

<org.yanzi.ui.ImageText
android:id="@+id/btn_contacts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/btn_message" />

<org.yanzi.ui.ImageText
android:id="@+id/btn_news"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/btn_contacts" />

<org.yanzi.ui.ImageText
android:id="@+id/btn_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" />

</org.yanzi.ui.BottomControlPanel></span>

¶ÔÓ¦µÄjavaÎļþ:BottomControlPanel.java

<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.ui;  

import java.util.ArrayList;
import java.util.List;

import org.yanzi.constant.Constant;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.RelativeLayout;

import com.example.fragmentproject.R;

public class BottomControlPanel extends RelativeLayout implements View.OnClickListener {
private Context mContext;
private ImageText mMsgBtn = null;
private ImageText mContactsBtn = null;
private ImageText mNewsBtn = null;
private ImageText mSettingBtn = null;
private int DEFALUT_BACKGROUND_COLOR = Color.rgb(243, 243, 243); //Color.rgb(192, 192, 192)
private BottomPanelCallback mBottomCallback = null;
private List<ImageText> viewList = new ArrayList<ImageText>();

public interface BottomPanelCallback{
public void onBottomPanelClick(int itemId);
}
public BottomControlPanel(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
protected void onFinishInflate() {
// TODO Auto-generated method stub
mMsgBtn = (ImageText)findViewById(R.id.btn_message);
mContactsBtn = (ImageText)findViewById(R.id.btn_contacts);
mNewsBtn = (ImageText)findViewById(R.id.btn_news);
mSettingBtn = (ImageText)findViewById(R.id.btn_setting);
setBackgroundColor(DEFALUT_BACKGROUND_COLOR);
viewList.add(mMsgBtn);
viewList.add(mContactsBtn);
viewList.add(mNewsBtn);
viewList.add(mSettingBtn);
}
public void initBottomPanel(){
if(mMsgBtn != null){
mMsgBtn.setImage(R.drawable.message_unselected);
mMsgBtn.setText("ÏûÏ¢");
}
if(mContactsBtn != null){
mContactsBtn.setImage(R.drawable.contacts_unselected);
mContactsBtn.setText("ÁªÏµÈË");
}
if(mNewsBtn != null){
mNewsBtn.setImage(R.drawable.news_unselected);
mNewsBtn.setText("ÐÂÎÅ");
}
if(mSettingBtn != null){
mSettingBtn.setImage(R.drawable.setting_unselected);
mSettingBtn.setText("ÉèÖÃ");
}
setBtnListener();

}
private void setBtnListener(){
int num = this.getChildCount();
for(int i = 0; i < num; i++){
View v = getChildAt(i);
if(v != null){
v.setOnClickListener(this);
}
}
}
public void setBottomCallback(BottomPanelCallback bottomCallback){
mBottomCallback = bottomCallback;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
initBottomPanel();
int index = -1;
switch(v.getId()){
case R.id.btn_message:
index = Constant.BTN_FLAG_MESSAGE;
mMsgBtn.setChecked(Constant.BTN_FLAG_MESSAGE);
break;
case R.id.btn_contacts:
index = Constant.BTN_FLAG_CONTACTS;
mContactsBtn.setChecked(Constant.BTN_FLAG_CONTACTS);
break;
case R.id.btn_news:
index = Constant.BTN_FLAG_NEWS;
mNewsBtn.setChecked(Constant.BTN_FLAG_NEWS);
break;
case R.id.btn_setting:
index = Constant.BTN_FLAG_SETTING;
mSettingBtn.setChecked(Constant.BTN_FLAG_SETTING);
break;
default:break;
}
if(mBottomCallback != null){
mBottomCallback.onBottomPanelClick(index);
}
}
public void defaultBtnChecked(){
if(mMsgBtn != null){
mMsgBtn.setChecked(Constant.BTN_FLAG_MESSAGE);
}
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
// TODO Auto-generated method stub
super.onLayout(changed, left, top, right, bottom);
layoutItems(left, top, right, bottom);
}
/**×î×ó±ßºÍ×îÓұߵÄviewÓÉĸ²¼¾ÖµÄpadding½øÐпØÖÆÎ»ÖᣠÕâÀïÐè¶ÔµÚ2¡¢3¸öviewµÄλÖÃÖØÐÂÉèÖÃ
* @param left
* @param top
* @param right
* @param bottom
*/
private void layoutItems(int left, int top, int right, int bottom){
int n = getChildCount();
if(n == 0){
return;
}
int paddingLeft = getPaddingLeft();
int paddingRight = getPaddingRight();
Log.i("yanguoqi", "paddingLeft = " + paddingLeft + " paddingRight = " + paddingRight);
int width = right - left;
int height = bottom - top;
Log.i("yanguoqi", "width = " + width + " height = " + height);
int allViewWidth = 0;
for(int i = 0; i< n; i++){
View v = getChildAt(i);
Log.i("yanguoqi", "v.getWidth() = " + v.getWidth());
allViewWidth += v.getWidth();
}
int blankWidth = (width - allViewWidth - paddingLeft - paddingRight) / (n - 1);
Log.i("yanguoqi", "blankV = " + blankWidth );

LayoutParams params1 = (LayoutParams) viewList.get(1).getLayoutParams();
params1.leftMargin = blankWidth;
viewList.get(1).setLayoutParams(params1);

LayoutParams params2 = (LayoutParams) viewList.get(2).getLayoutParams();
params2.leftMargin = blankWidth;
viewList.get(2).setLayoutParams(params2);
}



}
</span>

ÔÚonFinishInflate()º¯ÊýÀïʵÀý»¯ÀïÃæµÄ×ÓÔªËØ£¬ÔÚinitBottomPanel()ÀïÉèÖÃÿ¸öº¢×ÓµÄͼƬºÍÎÄ×Ö¡¢¼àÌý.onLayout()Àï¶ÔÖмäµÄ2¸öº¢×ÓµÄλÖýøÐе÷Õû£¬Ê¹Æä¾ùÔÈ·Ö²¼£¬¼ûÎÒµÄǰÎÄ¡£Õâ¸öBottomControlPanelʵÏÖÁËView.OnClickListener½Ó¿Ú£¬ÔÚonClick()Àïͨ¹ýidÀ´ÅжÏÓû§µã»÷ÁËÄÄÒ»¸öº¢×Ó¡£ÅжϳöÀ´ºóÐèÒª×öÁ½¼þÊ£¬Ò»ÊǶÔÕâ¸ö±»µã»÷µÄ¶ÔÏó½øÐд¦Àí£¬Èç×ÖÌåÑÕÉ«¡¢Í¼Æ¬×ÊÔ´µÄ±ä»¯£¬ÓÒÉϽÇСºìµãµÄÒþ²ØµÈµÈ¡£ÁíÒ»·½Ã棬BottomControlPanelÒª¸æËß½«À´ËüµÄÖ÷ÈË£¬Ò²¾ÍÊÇActivityµ½µ×ÊǵãÁËÄĸö£¬Í¨ÖªActivityÈ¥Çл»fragment¡£¿ÉÒÔ¿´µ½£¬activityÀàËÆ¸ö×Ü¿ØÖÐÐÄ£¬BottomControlPanel¹ÜÀíÊôÓÚËüµÄImageText£¬Í¬Ê±Éϱ¨Activity¡£ActivityÖªµÀÏûÏ¢ºóÔÙÇл»fragment£¬Ã¿¸öfragment¶¼ÓÐ×Ô¼ºµÄÊÂÎñÂß¼­¡£

ÕâÀﶨÒåÁË

public interface BottomPanelCallback{
public void onBottomPanelClick(int itemId); }

Õâ¸ö½Ó¿Ú£¬Í¨¹ý´«µÝIdÀ´Í¨ÖªActivity¡£defaultBtnChecked()º¯ÊýÊÇapk³õ´Î´ò¿ªºó£¬Ä¬ÈÏÇл»µ½µÚÒ»¸öÏûÏ¢fragmentÉÏ¡£

ÕâÀïÓиöµØ·½ÐèҪעÒ⣬¾ÍÊÇËäÈ»ImageTextºÍBottomControlPanel¶¼ÊÇ×Ô¶¨Òå¿Ø¼þ£¬µ«Á½ÕßÔÚ·½Ê½ÉÏÊÇÓÐÇø±ðµÄ¡£ÔÚImageTextµÄ¹¹Ô캯ÊýÀïͨ¹ýinflater½«²¼¾Ö¼ÓÔØ½øÀ´£¬Ëü¶ÔÓ¦µÄ²¼¾ÖÊǸöÆÕͨµÄ²¼¾Ö¡£¶øBottomControlPanel¶ÔÓ¦µÄ²¼¾ÖÎļþÀֱ½ÓʹÓÃÁ˶¨ÒåµÄBottomControlPanel£¬ÔÚonFinishInflateº¯ÊýÀïʵÀý»¯º¢×ÓView¡£Ç°ÕßÊÇinflateÖ®ºóʵÀý»¯µÄ¡£ÔÚʹÓÃImageTextµ½Ò»¸öеÄĸ²¼¾ÖʱÊÇͨ¹ý<org.yanzi.ui.ImageText />ÕâÖÖ·½Ê½½øÐеģ¬ÄÇôʹÓÃBottomControlPanelÓкÎÇø±ð£¬Çë¼ûÏÂÎĽéÉÜActivityµÄ²¼¾Öʱ¡£

¶þ¡¢¶¥²¿¿ØÖÆÀ¸

ÓÐÁ˵ײ¿¿ØÖÆÀ¸£¬¶¥²¿¿ØÖÆÀ¸¾Í¿ÉÒÔÈç·¨ÅÚÖÆÁË¡£ÕâÀïÏȽ»´ú¼¸¾ä£¬ËäÈ»Android3.0 ºóGoogleÍÆ³öµÄÓÐActionBarÀ´×ö¶¥²¿µ¼º½À¸£¬²Î¼û¹ùÉñµÄÕâÆª²©ÎÄ¡£µ«ÎÒ·¢ÏÖ£¬±¾ÎÄ×îÇ°ÃæÌùͼµÄ¼¸¿îÓ¦ÓÃÓ¦¸Ã¶¼Ã»ÓÐʹÓÃActionBar£¬ÒòΪËü²»¹»Áé»î¡£ActionBarʹÓÃÆðÀ´Ê²Ã´Ñù£¬´ó¼Ò¿´¿´Î¢ÐžÍÖªµÀÁË£¬ÄǸöµÄ¶¥²¿¿ØÖÆÀ¸¾ÍÊÇActionBar×öµÄ£¬Õâ¸öÓ¦¸ÃûÅÜ¡£

ͨ¹ý¹Û²ì£¬¶¥²¿¿ØÖÆÀ¸³ýÁ˱êÌâ¾ÓÖÐÍ⣬ÔÚÓÒÉϽÇͨ³£»áÔÙ·ÅÒ»¸ö°´Å¥¡£²»ÊÇImageView¾ÍÊÇTextView£¬ÕâÀïÎÒΪÁË·½±ã·ÅµÄÊÇÁ½¸öTextView£¬ÓÒ²àµÄ°´Å¥Ð§¹û¿ÉÒÔÔÙTextViewÉÏŪ¸ö±³¾°À´ÊµÏÖ¡£

HeadControlPanel.java

<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.ui;  

import org.yanzi.constant.Constant;

import com.example.fragmentproject.R;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class HeadControlPanel extends RelativeLayout {

private Context mContext;
private TextView mMidleTitle;
private TextView mRightTitle;
private static final float middle_title_size = 20f;
private static final float right_title_size = 17f;
private static final int default_background_color = Color.rgb(23, 124, 202);

public HeadControlPanel(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}

@Override
protected void onFinishInflate() {
// TODO Auto-generated method stub
mMidleTitle = (TextView)findViewById(R.id.midle_title);
mRightTitle = (TextView)findViewById(R.id.right_title);
setBackgroundColor(default_background_color);
}
public void initHeadPanel(){

if(mMidleTitle != null){
setMiddleTitle(Constant.FRAGMENT_FLAG_MESSAGE);
}
}
public void setMiddleTitle(String s){
mMidleTitle.setText(s);
mMidleTitle.setTextSize(middle_title_size);
}


}
</span>

²¼¾ÖÎļþhead_panel_layout.xml

<span style="font-family:Comic Sans MS;font-size:18px;"><?xml version="1.0" encoding="utf-8"?>  
<org.yanzi.ui.HeadControlPanel xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentTop="true">
<TextView
android:id="@+id/midle_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textColor="@android:color/white"/>
<TextView
android:id="@+id/right_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:textColor="@android:color/white"/>

</org.yanzi.ui.HeadControlPanel>
</span>

Èý¡¢×Ü¿ØÖÐÐÄActivityºÍFragment

ÏȽ»´úÏÂFragmentµÄʹÓôóÖ·ÖÁ½ÖÖ£¬Ò»ÖÖÊǽ«Fragment×÷Ϊһ¸öViewдËÀÔÚ²¼¾ÖÖУ¬²¼¾ÖÀïʹÓÃandroid:nameÀ´¸æËßËü¶ÔÓ¦µÄÊÇÄĸöʵÌåFragment¡£ÕâÖÖÌí¼ÓfragmentµÄ·½Ê½²»ÄÜdeleteºÍreplaceµô¡£ÁíÒ»ÖÖÊÇͨ¹ý»ñµÃactivityµÄfragmentmanagerºÍfragmentTransactionºÍ½øÐж¯Ì¬µÄÌí¼Ó¡£ÕâÖÖ·½Ê½¸ü¼ÓÁé»î£¬Ò»°ãʹÓôËÖÖ·½·¨¡£

ÏÈ¿´ActivityµÄ²¼¾Öactivity_main.xml:

<span style="font-family:Comic Sans MS;font-size:18px;">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.yanzi.fragmentproject.MainActivity" >

<include
android:id="@+id/bottom_layout"
layout="@layout/bottom_panel_layout" />

<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:layout_above="@id/bottom_layout"
android:background="#FFE7E7E7" />

<include
android:id="@+id/head_layout"
layout="@layout/head_panel_layout" />

<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:layout_below="@id/head_layout"
android:background="#FFE7E7E7" />
<FrameLayout
android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/head_layout"
android:layout_above="@id/bottom_layout" >
</FrameLayout>

</RelativeLayout></span>

×¢Òâ¿´ÕâÀïÊÇͨ¹ýincludeµÄ·½Ê½°Ñ¸Õ²Å×Ô¶¨ÒåµÄÉÏÏÂpanel¼Ó¹ýÀ´£¬¶ø²»ÄÜÖ±½ÓÓÃ<org.yanzi.ui.BottomControlPanel />ÕâÖÖ·½Ê½Ö±½Ó¼ÓÔØ¡£µ±È»Èç¹ûҲģ·ÂImageTextµÄ¹¹Ô췽ʽ£¬Ò²ÊÇ¿ÉÒÔÕâÑùÓõġ£¹ØÓÚinclude·½Ê½µÄʹÓÃÓм¸¸ö×¢ÒâÊÂÏ¾ÍÊÇ×îºÃÈÃËüµÄĸ²¼¾ÖÊÇRelativeLayout£¬·ñÔòµÄ»°ºÜÄÑ¿ØÖÆinclude½øÀ´µÄ²¼¾ÖµÄλÖá£ÁíÍ⣬include²¼¾ÖµÄλÖÃÒ»¶¨ÒªÐ´ÔÚinclude֮ǰ£¬Èçµ×²¿Ãæ°åÔÚ×îµ×²¿£¬android:layout_alignParentBottom="true"Õâ¾ä»°ÊÇÔÚbottom_panel_layout.xmlÀïдµÄ£¬Èç¹ûдÔÚactivity_main.xmlÀï¾ÍÊÇÎÞЧµÄ£¬Õâ×ÅʵÊǸöµ°ÌÛµÄÎÊÌâ¡£ÔÙ¾ÍÊÇincludeºóÉèÖõÄid»á¸²¸ÇµôÒÔǰµÄ£¬ËùÒÔÕâÀïÖ»ÔÚincludeµÄʱºòÉèÖÃid¡£ÆäÖеÄÁ½¸öViewÊÇ·Ö¸îÏß¡£ÕûÌåÊǰ´Õյײ¿À¸¡¢Éϲ¿À¸¡¢ÖмäFragmentµÄÈÝÆ÷À´·ÅÖõġ£
ÔÚ·ÅFragmentµÄʱºòÐèҪעÒ⣬¾¿¾¹ÊÇ·ñÒª½«¶¥²¿¿ØÖÆÀ¸·Åµ½¸÷×ÔµÄfragmentÀïºÏÊÊ»¹ÊǷŵ½ActivityÀïºÏÊÊÒª¿´¾ßÌåÇé¿ö£¬Èç¹û¶¥²¿À¸Àï¶àÊÇÏÔʾ±êÌâÕâÖÖ¹¦ÄÜ»òÉÙÁ¿µÄµã»÷ʼþ£¬Ó¦¸Ã·Åµ½ActivityÀ¼´¶¥²¿À¸µÄÊÂÎñÂß¼­ºÍµ±Ç°fragmentµÄÊÂÎñÂß¼­ñîºÏµÄ²»ÊǺܽô¡£¾Ù¸öÀý×Ó£¬±ÈÈç΢ÐŵĶ¥²¿À¸£¬²»¹ÜÄã´¦ÔÚÄĸöTabÒ³(ÁÄÌì¡¢·¢ÏÖ¡¢Í¨Ñ¶Â¼)£¬µã»÷¶¥²¿À¸ÀïµÄ°´Å¥¶¼³ÊÏÖ³öͬÑùµÄÄÚÈÝ¡£µ«·´¹ýÀ´½²£¬Èç¹û¶¥²¿À¸ÀïµÄÊÂÎñÂß¼­ºÍfragmentñîºÏºÜ½ô£¬¼´ÔÚ²»Í¬µÄfragment£¬¶¥²¿À¸³ÊÏÖµÄÄÚÈݶ¼²»Ò»Ñù£¬ÇÒµã»÷ºó´¦ÀíµÄÊÂÎñÒ²ºÍµ±Ç°fragment½ôÃÜÁªÏµÒ»Æð£¬ÄǾÍÓ¦¸ÃÒ»¸öfragmentÅäÌ×Ò»¸ö¶¥²¿À¸£¬·½±ã¿ØÖÆ¡£±¾ÎÄÊǽ«Á½Õß·Ö¿ªµÄ¡£ËùÒÔÈÃfragmentµÄÈÝÆ÷ÔÚ¶¥²¿À¸Ö®Ï£¬µ×²¿À¸Ö®ÉÏ£¬²»ÕâÑùдµÄ»°£¬¾Í»áÕÚµ²¡£

<FrameLayout
android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/head_layout"
android:layout_above="@id/bottom_layout" >
</FrameLayout>

MainActivity.java´úÂ룺

<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.activity;  

import org.yanzi.constant.Constant;
import org.yanzi.fragment.BaseFragment;
import org.yanzi.fragment.ContactsFragment;
import org.yanzi.fragment.MessageFragment;
import org.yanzi.fragment.NewsFragment;
import org.yanzi.fragment.SettingFragment;
import org.yanzi.ui.BottomControlPanel;
import org.yanzi.ui.BottomControlPanel.BottomPanelCallback;
import org.yanzi.ui.HeadControlPanel;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;

import com.example.fragmentproject.R;

public class MainActivity extends Activity implements BottomPanelCallback {
BottomControlPanel bottomPanel = null;
HeadControlPanel headPanel = null;

private FragmentManager fragmentManager = null;
private FragmentTransaction fragmentTransaction = null;

/* private MessageFragment messageFragment;
private ContactsFragment contactsFragment;
private NewsFragment newsFragment;
private SettingFragment settingFragment;*/

public static String currFragTag = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initUI();
fragmentManager = getFragmentManager();
setDefaultFirstFragment(Constant.FRAGMENT_FLAG_MESSAGE);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void initUI(){
bottomPanel = (BottomControlPanel)findViewById(R.id.bottom_layout);
if(bottomPanel != null){
bottomPanel.initBottomPanel();
bottomPanel.setBottomCallback(this);
}
headPanel = (HeadControlPanel)findViewById(R.id.head_layout);
if(headPanel != null){
headPanel.initHeadPanel();
}
}

/* ´¦ÀíBottomControlPanelµÄ»Øµ÷
* @see org.yanzi.ui.BottomControlPanel.BottomPanelCallback#onBottomPanelClick(int)
*/
@Override
public void onBottomPanelClick(int itemId) {
// TODO Auto-generated method stub
String tag = "";
if((itemId & Constant.BTN_FLAG_MESSAGE) != 0){
tag = Constant.FRAGMENT_FLAG_MESSAGE;
}else if((itemId & Constant.BTN_FLAG_CONTACTS) != 0){
tag = Constant.FRAGMENT_FLAG_CONTACTS;
}else if((itemId & Constant.BTN_FLAG_NEWS) != 0){
tag = Constant.FRAGMENT_FLAG_NEWS;
}else if((itemId & Constant.BTN_FLAG_SETTING) != 0){
tag = Constant.FRAGMENT_FLAG_SETTING;
}
setTabSelection(tag); //Çл»Fragment
headPanel.setMiddleTitle(tag);//Çл»±êÌâ
}

private void setDefaultFirstFragment(String tag){
Log.i("yan", "setDefaultFirstFragment enter... currFragTag = " + currFragTag);
setTabSelection(tag);
bottomPanel.defaultBtnChecked();
Log.i("yan", "setDefaultFirstFragment exit...");
}

private void commitTransactions(String tag){
if (fragmentTransaction != null && !fragmentTransaction.isEmpty()) {
fragmentTransaction.commit();
currFragTag = tag;
fragmentTransaction = null;
}
}

private FragmentTransaction ensureTransaction( ){
if(fragmentTransaction == null){
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);

}
return fragmentTransaction;

}

private void attachFragment(int layout, Fragment f, String tag){
if(f != null){
if(f.isDetached()){
ensureTransaction();
fragmentTransaction.attach(f);

}else if(!f.isAdded()){
ensureTransaction();
fragmentTransaction.add(layout, f, tag);
}
}
}

private Fragment getFragment(String tag){

Fragment f = fragmentManager.findFragmentByTag(tag);

if(f == null){
Toast.makeText(getApplicationContext(), "fragment = null tag = " + tag, Toast.LENGTH_SHORT).show();
f = BaseFragment.newInstance(getApplicationContext(), tag);
}
return f;

}
private void detachFragment(Fragment f){

if(f != null && !f.isDetached()){
ensureTransaction();
fragmentTransaction.detach(f);
}
}
/**Çл»fragment
* @param tag
*/
private void switchFragment(String tag){
if(TextUtils.equals(tag, currFragTag)){
return;
}
//°ÑÉÏÒ»¸öfragment detachµô
if(currFragTag != null && !currFragTag.equals("")){
detachFragment(getFragment(currFragTag));
}
attachFragment(R.id.fragment_content, getFragment(tag), tag);
commitTransactions( tag);
}

/**ÉèÖÃÑ¡ÖеÄTag
* @param tag
*/
public void setTabSelection(String tag) {
// ¿ªÆôÒ»¸öFragmentÊÂÎñ
fragmentTransaction = fragmentManager.beginTransaction();
/* if(TextUtils.equals(tag, Constant.FRAGMENT_FLAG_MESSAGE)){
if (messageFragment == null) {
messageFragment = new MessageFragment();
}

}else if(TextUtils.equals(tag, Constant.FRAGMENT_FLAG_CONTACTS)){
if (contactsFragment == null) {
contactsFragment = new ContactsFragment();
}

}else if(TextUtils.equals(tag, Constant.FRAGMENT_FLAG_NEWS)){
if (newsFragment == null) {
newsFragment = new NewsFragment();
}

}else if(TextUtils.equals(tag,Constant.FRAGMENT_FLAG_SETTING)){
if (settingFragment == null) {
settingFragment = new SettingFragment();
}
}else if(TextUtils.equals(tag, Constant.FRAGMENT_FLAG_SIMPLE)){
if (simpleFragment == null) {
simpleFragment = new SimpleFragment();
}

}*/
switchFragment(tag);

}

@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
currFragTag = "";
}

@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
}

}
</span>

×¢ÒâÕâ¿éÎÒ×÷Á˸͝£¬²»ÐèÒªÉêÃ÷

/*	private MessageFragment messageFragment;
private ContactsFragment contactsFragment;
private NewsFragment newsFragment;
private SettingFragment settingFragment;*/

ÕâЩÄÚÈÝ£¬ÒòΪFragmentµÄÉú³ÉÊÇͨ¹ýBaseFragment.newInstance()À´Éú³ÉµÄ£¬´«½øÈ¥TagÉú³ÉÏàÓ¦µÄFragment¡£ËùÓеÄFragment£¬ContactsFragment¡¢MessageFragment¡¢NewsFragment¡¢SettingFragment¶¼¼Ì³Ð×ÔBaseFragment£¬Í¨¹ýBaseFragmentÀïµÄnewInstance()½Ó¿Ú½øÐÐʵÀý»¯¶ÔÓ¦µÄfragment¡£ÓŵãÊÇ·½±ã¹ÜÀí£¬È±µãôҲÓУ¬ÒòΪjava¼Ì³Ð¼Ì³ÐÒ»¸öÀ࣬²»ÄÜͬʱ¼Ì³ÐÁ½¸öÀà¡£ËùÒÔÈçListFragmentÕâЩ£¬¾Íû·¨Í¬Ê±¼Ì³ÐÁË¡£²»¹ýºÃÔÚÓÐlistviewÕâЩ£¬Ò²·Á°­²»ÁËÎÒÃÇ×öµ½Í¬ÑùµÄЧ¹û¡£

ActivityÀïʼþµÄÈë¿ÚÊÇÔÚonBottomPanelClick()¼àÌýµã»÷ÁËË­£¬È»ºó£º

etTabSelection(tag); //Çл»Fragment

headPanel.setMiddleTitle(tag);//Çл»±êÌâ

ÏÈÇл»FragmentÔÙÇл»¶¥²¿À¸µÄ±êÌâ¡£setTabSelection()ÀïÖ±½Óµ÷switchFragment(),ÔÚswitchFragmentº¯ÊýÀïÏÈÅжϱêÇ©ÊÇ·ñÒ»Ñù£¬Ò»ÑùÔòÒâÍâ×ÅÎÞÐèÇл»£¬·ñÔòµÄ»°¾ÍÏȰѵ±Ç°FragmentÕÒµ½È»ºódetachµô£¬Ö®ºó½øµ½attachFragment()º¯ÊýÀï¡£ÔÚÕâÀÏÈÅжÏÕâ¸öfragmentÊDz»ÊDZ»detachµôµÄ£¬Èç¹ûÊǵϰÒâζ×ÅÖ®Ç°Ôø±»add¹ý£¬ËùÒÔÖ»Ðèattach¾ÍokÁË¡£·ñÔòµÄ»°£¬Òâζ×ÅÕâÊǵÚÒ»´Î£¬½øÐÐadd.ÕâÀï¼Ç¼ÏÂFragmentµÄÉùÃ÷ÖÜÆÚ:

MessageFragmentÕý³£´ò¿ª£º

Line 155: 01-04 11:50:46.688 E/MessageFragment( 2546): onAttach-----
Line 159: 01-04 11:50:46.688 E/MessageFragment( 2546): onCreate------
Line 161: 01-04 11:50:46.693 D/MessageFragment( 2546): onCreateView---->
Line 165: 01-04 11:50:46.694 E/MessageFragment( 2546): onActivityCreated-------
Line 169: 01-04 11:50:46.694 E/MessageFragment( 2546): onStart----->
Line 173: 01-04 11:50:46.694 E/MessageFragment( 2546): onresume---->

·µ»Ø¼üÍ˳ö£º

Line 183: 01-04 11:52:26.506 E/MessageFragment( 2546): onpause
Line 259: 01-04 11:52:27.131 E/MessageFragment( 2546): onStop
Line 263: 01-04 11:52:27.132 E/MessageFragment( 2546): ondestoryView
Line 269: 01-04 11:52:27.134 E/MessageFragment( 2546): ondestory
Line 271: 01-04 11:52:27.135 D/MessageFragment( 2546): onDetach------

°´home°´¼üÍ˳ö:

Line 97: 01-05 05:06:15.659 E/MessageFragment(18835): onpause
Line 215: 01-05 05:06:16.292 E/MessageFragment(18835): onStop

Ôٴδò¿ª£º

Line 81: 01-05 05:07:02.408 E/MessageFragment(18835): onStart----->
Line 85: 01-05 05:07:02.408 E/MessageFragment(18835): onresume---->

ͨ¹ýdetachµÄ·½Ê½Çл»ÖÁÆäËûFragment£º

Line 69: 01-04 11:53:33.381 E/MessageFragment( 2546): onpause
Line 73: 01-04 11:53:33.382 E/MessageFragment( 2546): onStop
Line 77: 01-04 11:53:33.382 E/MessageFragment( 2546): ondestoryView

ÔÙ´ÎÇл»¹ýÀ´:

Line 55: 01-04 11:54:59.462 D/MessageFragment( 2546): onCreateView---->
Line 59: 01-04 11:54:59.463 E/MessageFragment( 2546): onActivityCreated-------
Line 63: 01-04 11:54:59.463 E/MessageFragment( 2546): onStart----->
Line 67: 01-04 11:54:59.464 E/MessageFragment( 2546): onresume---->

ËÄ¡¢ÊÊÅäÆ÷ºÍMessageBean

±¾À´ÒªÁ¬Êý¾Ý¿âµÄ£¬Ê±¼äÔ­ÒòÓøö¼òµ¥µÄMessageBean´úÌæÁË¡£Ò»¸öÏûÏ¢·ÖÁªÏµÈËÍ·Ïñ¡¢Ãû×Ö¡¢ÏûÏ¢ÕýÎĺÍʱ¼äËIJ¿·Ö×é³É£¬·â×°µ½Ò»¸öMessageBeanÀï¡£

MessageBean.java

<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.bean;  

public class MessageBean {
private int PhotoDrawableId;
private String MessageName;
private String MessageContent;
private String MessageTime;

public MessageBean(){

}

public MessageBean(int photoDrawableId, String messageName,
String messageContent, String messageTime) {
super();
PhotoDrawableId = photoDrawableId;
MessageName = messageName;
MessageContent = messageContent;
MessageTime = messageTime;
}

public int getPhotoDrawableId() {
return PhotoDrawableId;
}
public void setPhotoDrawableId(int mPhotoDrawableId) {
this.PhotoDrawableId = mPhotoDrawableId;
}
public String getMessageName() {
return MessageName;
}
public void setMessageName(String messageName) {
MessageName = messageName;
}
public String getMessageContent() {
return MessageContent;
}
public void setMessageContent(String messageContent) {
MessageContent = messageContent;
}
public String getMessageTime() {
return MessageTime;
}
public void setMessageTime(String messageTime) {
MessageTime = messageTime;
}
@Override
public String toString() {
return "MessageBean [mPhotoDrawableId=" + PhotoDrawableId
+ ", MessageName=" + MessageName + ", MessageContent="
+ MessageContent + ", MessageTime=" + MessageTime + "]";
}



}
</span>

È»ºó¾ÍÊÇMessageFragmentµÄListViewÀïµÄÊÊÅäÆ÷£¬MessageAdapter.java

<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.fragment.adapter;  

import java.util.List;

import org.yanzi.bean.MessageBean;

import com.example.fragmentproject.R;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MessageAdapter extends BaseAdapter {
private List<MessageBean> mListMsgBean = null;
private Context mContext;
private LayoutInflater mInflater;
public MessageAdapter(List<MessageBean> listMsgBean, Context context){
mListMsgBean = listMsgBean;
mContext = context;
mInflater = LayoutInflater.from(mContext);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mListMsgBean.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mListMsgBean.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = mInflater.inflate(R.layout.message_item_layout, null);

ImageView imageView = (ImageView) v.findViewById(R.id.img_msg_item);
imageView.setImageResource(mListMsgBean.get(position).getPhotoDrawableId());

TextView nameMsg = (TextView)v.findViewById(R.id.name_msg_item);
nameMsg.setText(mListMsgBean.get(position).getMessageName());

TextView contentMsg = (TextView)v.findViewById(R.id.content_msg_item);
contentMsg.setText(mListMsgBean.get(position).getMessageContent());

TextView timeMsg = (TextView)v.findViewById(R.id.time_msg_item);
timeMsg.setText(mListMsgBean.get(position).getMessageTime());

return v;
}

}
</span>

ÒòΪÊÇʾÀý£¬getViewÀïûÓÃViewHolder¡£

×îºóÊÇMessageFragmentÀïͨ¹ý¶ÔlistviewÉèÖÃÊÊÅäÆ÷£¬½«MessageBean×÷ΪÐÅÏ¢µÄÌṩÕßÒ²Ìî³äµ½ÊÊÅäÆ÷Àï¡£

MessageFragment.java´úÂ룺

<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.fragment;  

import java.util.ArrayList;
import java.util.List;

import org.yanzi.activity.MainActivity;
import org.yanzi.bean.MessageBean;
import org.yanzi.constant.Constant;
import org.yanzi.fragment.adapter.MessageAdapter;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.example.fragmentproject.R;

public class MessageFragment extends BaseFragment {

private static final String TAG = "MessageFragment";
private MainActivity mMainActivity ;
private ListView mListView;
private MessageAdapter mMsgAdapter;
private List<MessageBean> mMsgBean = new ArrayList<MessageBean>();
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View messageLayout = inflater.inflate(R.layout.message_layout,
container, false);
Log.d(TAG, "onCreateView---->");
mMainActivity = (MainActivity) getActivity();
mFragmentManager = getActivity().getFragmentManager();
mListView = (ListView)messageLayout.findViewById(R.id.listview_message);
mMsgAdapter = new MessageAdapter(mMsgBean, mMainActivity);
mListView.setAdapter(mMsgAdapter);
mListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(mMainActivity, mMsgBean.get(position).toString(),
Toast.LENGTH_SHORT).show();
}

});
return messageLayout;
}


@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
Log.e(TAG, "onAttach-----");

}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.e(TAG, "onCreate------");
mMsgBean.add(new MessageBean(R.drawable.ic_photo_1, "ÕÅÈý", "³Ô·¹Ã»?", "×òÌì"));
mMsgBean.add(new MessageBean(R.drawable.ic_photo_2, "ÀîËÄ", "¹þ¹þ", "×òÌì"));
mMsgBean.add(new MessageBean(R.drawable.ic_photo_3, "СÃ÷", "³Ô·¹Ã»?", "×òÌì"));
mMsgBean.add(new MessageBean(R.drawable.ic_photo_4, "ÍõÎå", "³Ô·¹Ã»?", "×òÌì"));
mMsgBean.add(new MessageBean(R.drawable.ic_photo_5, "Jack", "³Ô·¹Ã»?", "×òÌì"));
mMsgBean.add(new MessageBean(R.drawable.ic_photo_6, "Jone", "³Ô·¹Ã»?", "×òÌì"));
mMsgBean.add(new MessageBean(R.drawable.ic_photo_7, "Jone", "³Ô·¹Ã»?", "×òÌì"));
mMsgBean.add(new MessageBean(R.drawable.ic_photo_8, "Jone", "³Ô·¹Ã»?", "×òÌì"));
mMsgBean.add(new MessageBean(R.drawable.ic_photo_9, "Jone", "³Ô·¹Ã»?", "×òÌì"));
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
Log.e(TAG, "onActivityCreated-------");
}

@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();

Log.e(TAG, "onStart----->");
}

@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.e(TAG, "onresume---->");
MainActivity.currFragTag = Constant.FRAGMENT_FLAG_MESSAGE;
}

@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.e(TAG, "onpause");
}

@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.e(TAG, "onStop");
}

@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
Log.e(TAG, "ondestoryView");
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.e(TAG, "ondestory");
}

@Override
public void onDetach() {
// TODO Auto-generated method stub
super.onDetach();
Log.d(TAG, "onDetach------");

}



}
</span>

×îºóÀ´¿´ÏÂЧ¹û°É£¬Ö»ÓÐMessageFragmentÌî³äÁËÊý¾Ý£º

ºáÆÁÇé¿öÏÂ:

   
7408 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ