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; } } }