1、在activity_main.xml布局上添加帧布局FrameLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<fragment
android:id="@+id/top"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:name="com.t20.fragment.TopFragment"
/>
<!-- 使用帧布局来放要被替换的fragment-->
<FrameLayout
android:id="@+id/frame"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
</FrameLayout>
</LinearLayout>
2、MainActivity.java
package com.t20;
import com.t20.fragment.Frag1Fragment;
import com.t20.fragment.Frag2Fragment;
import com.t20.fragment.Frag3Fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
public class MainActivity extends FragmentActivity {
//自定义的tag标签
public static String TAG1="frag1";
public static String TAG2="frag2";
public static String TAG3="frag3";
//Fragmemt的类
public Fragment f1=new Frag1Fragment();
public Fragment f2=new Frag2Fragment();
public Fragment f3=new Frag3Fragment();
/**
* 切换帧布局中的Fragmemt
* @param fragment
* @param tag
*/
public void changeFragmemt(Fragment fragment,String tag){
//1、获取辅助碎片管理器
FragmentManager fm= getSupportFragmentManager();
//2、开启事务
FragmentTransaction ft= fm.beginTransaction();
if(tag.equals(TAG1)){
ft.show(f1);
ft.hide(f2);
ft.hide(f3);
}else if(tag.equals(TAG2)){
ft.show(f2);
ft.hide(f1);
ft.hide(f3);
}else{
ft.show(f3);
ft.hide(f1);
ft.hide(f2);
}
//4、提交事务
ft.commit();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_msg_info);
/**
* 初始化帧布局的内容
*/
//1、获取辅助碎片管理器
FragmentManager fm= getSupportFragmentManager();
//2、开启事务
FragmentTransaction ft= fm.beginTransaction();
//3、添加Fragment
ft.add(R.id.frame, f1, TAG1);
ft.add(R.id.frame, f2, TAG2);
ft.add(R.id.frame, f3, TAG3);
//---------帧布局框架id--Fragment碎片---自定义tag标签
//4、提交事务
ft.commit();
}
}
3、TopFragment.java
package com.t20t.fragment;
import com.t20t.MainActivity;
import com.t20t.R;
import com.t20t.util.CircleImageView;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class TopFragment extends Fragment implements OnClickListener{
private ImageView ivHeadPic;//头像
private TextView tvNick;//昵称
private TextView tvMsg;//消息
private EditText inputContent;//回复内容
private Button btn1,btn2,btn3;//按钮
/**
* 设置信息
* @param imageId
* @param nick
* @param msg
*/
public void setInfo(int imageId,String nick,String msg){
ivHeadPic.setImageResource(imageId);
tvNick.setText(nick);
tvMsg.setText(msg);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
//加载头部布局(top.xml)
View v=inflater.inflate(R.layout.top, container, false);
//获取布局上的控件
ivHeadPic=(ImageView) v.findViewById(R.id.topHeadPic);
tvNick=(TextView) v.findViewById(R.id.topNick);
tvMsg=(TextView) v.findViewById(R.id.topMsg);
inputContent=(EditText) v.findViewById(R.id.inputContent);
btn1=(Button) v.findViewById(R.id.button1);
btn2=(Button) v.findViewById(R.id.button2);
btn3=(Button) v.findViewById(R.id.button3);
//监听事件
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
return v;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//获取内容
String content=inputContent.getText().toString();
if(content.isEmpty()){
Toast.makeText(getActivity(),"请输入回复内容", Toast.LENGTH_SHORT).show();
return;
}
//1、获取Activity活动
MainActivity activity= (MainActivity) getActivity();
//2、获取辅助碎片管理器
FragmentManager fm= activity.getSupportFragmentManager();
switch (v.getId()) {
case R.id.button1:
//切换帧布局中的Fragment
activity.changeFragmemt(activity.f1, activity.TAG1);
//通过tag获取对应的Fragment
Frag1Fragment frag1= (Frag1Fragment) fm.findFragmentByTag(activity.TAG1);
if(frag1==null){
Toast.makeText(getActivity(),"帧布局中找不到TAG1", Toast.LENGTH_SHORT).show();
return;
}
//调用Frag1Fragment.java中的方法
frag1.setContent(content);
break;
case R.id.button2:
//切换帧布局中的Fragment
activity.changeFragmemt(activity.f2, activity.TAG2);
//通过tag获取对应的Fragment
Frag2Fragment frag2= (Frag2Fragment) fm.findFragmentByTag(activity.TAG2);
if(frag2==null){
Toast.makeText(getActivity(),"帧布局中找不到TAG2", Toast.LENGTH_SHORT).show();
return;
}
//调用Frag2Fragment.java中的方法
frag2.setContent(content);
break;
case R.id.button3:
//切换帧布局中的Fragment
activity.changeFragmemt(activity.f3, activity.TAG3);
//通过tag获取对应的Fragment
Frag3Fragment frag3= (Frag3Fragment) fm.findFragmentByTag(activity.TAG3);
if(frag3==null){
Toast.makeText(getActivity(),"帧布局中找不到TAG3", Toast.LENGTH_SHORT).show();
return;
}
//调用Frag3Fragment.java中的方法
frag3.setContent(content);
break;
}
}
}