<?xml version="1.0" enCoding="utf-8"?><FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:app="http://schemas.androID.com/apk/res-auto" xmlns:tools="http://schemas.androID.com/tools" androID:ID="@+ID/container" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context=".switch_fragment"></FrameLayout>
(二)、第一张碎片布局(fragment_first.xml)<?xml version="1.0" enCoding="utf-8"?><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" tools:context=".FirstFragment" androID:background="@drawable/img1" androID:orIEntation="vertical" androID:gravity="center"> <TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_marginBottom="20dp" androID:text="@string/first_fragment" androID:textcolor="#2196F3" androID:textSize="25sp"/> <button androID:ID="@+ID/btnNextFragmrnt" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:onClick="doNextFragmrnt" androID:text="@string/next_fragment" /> <button androID:ID="@+ID/btnChampion" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:onClick="doChampion" androID:text="冠军" /></linearLayout>
(三)、第二张碎片布局(fragment_second.xml)@H_502_87@
<?xml version="1.0" enCoding="utf-8"?><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" tools:context=".SecondFragment" androID:background="@drawable/img2" androID:orIEntation="vertical" androID:gravity="center"> <TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_marginBottom="20dp" androID:text="@string/second_fragment" androID:textcolor="#00BCD4" androID:textSize="25sp"/> <button androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:ID="@+ID/btnNextFragmrnt" androID:onClick="doNextFragmrnt" androID:text="@string/next_fragment"/> <button androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:ID="@+ID/btnSecond" androID:onClick="doSecond" androID:text="亚军"/></linearLayout>
(四)、第三张碎片布局(fragment_third.xml)<?xml version="1.0" enCoding="utf-8"?><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" tools:context=".ThirdFragment" androID:background="@drawable/img3" androID:orIEntation="vertical" androID:gravity="center"> <TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_marginBottom="20dp" androID:text="@string/third_fragment" androID:textcolor="#2196F3" androID:textSize="25sp"/> <button androID:ID="@+ID/btnNextFragmrnt" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:onClick="doNextFragmrnt" androID:text="@string/next_fragment" /> <button androID:ID="@+ID/btnRunner" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:onClick="doRunner" androID:text="季军" /></linearLayout>
五、字符串资源文件strings.xml<resources> <string name="app_name">切换碎片</string> <string name="first_fragment">第一个碎片</string> <string name="second_fragment">第二个碎片</string> <string name="third_fragment">第三个碎片</string> <string name="next_fragment">下一个碎片</string></resources>
六、主界面类(一)、第一张碎片@H_404_122@
package net.tp.xiangduibuju;import androID.os.Bundle;import androIDx.fragment.app.Fragment;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androID.Widget.Toast;public class FirstFragment extends Fragment { private button btnNextFragment; private button btnChampion; public FirstFragment() { } @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } /* * @param inflater布局填充器 *@param container 容器 * @param saveInstanceState 保存实例状态 * @return * */ @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { // 获取碎片视图 VIEw vIEw = inflater.inflate(R.layout.fragment_first,container,false); //通过资源标识符获取控件实例 btnNextFragment= vIEw.findVIEwByID(R.ID.btnNextFragmrnt); btnChampion= vIEw.findVIEwByID(R.ID.btnChampion); //给按钮注册监听器 btnNextFragment.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { getFragmentManager().beginTransaction().addToBackStack("next").replace(R.ID.container,FragmentList.fragments.get(1)).commit(); } }); btnChampion.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { Toast.makeText(getActivity(),"我是冠军",Toast.LENGTH_SHORT).show(); } }); //返回视图 return vIEw; }}
(二)、第二张碎片package net.tp.xiangduibuju;import androID.os.Bundle;import androIDx.fragment.app.Fragment;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androID.Widget.Toast;public class SecondFragment extends Fragment { private button btnNextFragment; private button btnSecond; public SecondFragment() { } /* * @param inflater布局填充器 *@param container 容器 * @param saveInstanceState 保存实例状态 * @return * */ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { // 获取碎片视图 VIEw vIEw = inflater.inflate(R.layout.fragment_second,container,false); //通过资源标识符获取控件实例 btnNextFragment= vIEw.findVIEwByID(R.ID.btnNextFragmrnt); btnSecond =vIEw.findVIEwByID(R.ID.btnSecond); //给按钮注册监听器 btnNextFragment.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { //跳转到第三个碎片 getFragmentManager().beginTransaction().addToBackStack("next").replace(R.ID.container,FragmentList.fragments.get(2)).commit(); } }); btnSecond.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Toast.makeText(getActivity(),"我是亚军",Toast.LENGTH_SHORT).show(); } }); //返回视图 return vIEw; }}
(三)、第三张碎片package net.tp.xiangduibuju;import androID.os.Bundle;import androIDx.fragment.app.Fragment;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androID.Widget.Toast;public class ThirdFragment extends Fragment { private button btnNextFragment; private button btnRunner; public ThirdFragment() { } /* * @param inflater布局填充器 *@param container 容器 * @param saveInstanceState 保存实例状态 * @return * */ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { // 获取碎片视图 VIEw vIEw = inflater.inflate(R.layout.fragment_third,container,false); //通过资源标识符获取控件实例 btnNextFragment= vIEw.findVIEwByID(R.ID.btnNextFragmrnt); btnRunner = vIEw.findVIEwByID(R.ID.btnRunner); //给按钮注册监听器 btnNextFragment.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { //跳转到第三个碎片 getFragmentManager().beginTransaction() .addToBackStack("next") .replace(R.ID.container,FragmentList.fragments.get(0)) .commit(); } }); btnRunner.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Toast.makeText(getActivity(),"我是季军",Toast.LENGTH_SHORT).show(); } }); //返回视图 return vIEw; }}
(四)、主界面package net.tp.xiangduibuju;import androIDx.appcompat.app.AppCompatActivity;import androIDx.fragment.app.FragmentManager;import androID.os.Bundle;import androID.vIEw.GestureDetector;import androID.vIEw.MotionEvent;public class switch_fragment extends AppCompatActivity { private GestureDetector detector; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //利用布局资源文件设置用户 界面 setContentVIEw(R.layout.activity_switch_fragment); //获取碎片管理器 FragmentManager fm=getSupportFragmentManager(); //创建三个碎片,添加到碎片列表 FragmentList.fragments.add(new FirstFragment()); FragmentList.fragments.add(new SecondFragment()); FragmentList.fragments.add(new ThirdFragment()); // 在主容器里添加第一个碎片 fm.beginTransaction().add(R.ID.container, FragmentList.fragments.get(0)).commit(); // 实例化手势侦测器 detector = new GestureDetector(new GestureDetector.OnGestureListener() { @OverrIDe public boolean onDown(MotionEvent motionEvent) { return false; } @OverrIDe public voID onShowPress(MotionEvent motionEvent) { } @OverrIDe public boolean onSingleTapUp(MotionEvent motionEvent) { return false; } @OverrIDe public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { return false; } @OverrIDe public voID onLongPress(MotionEvent motionEvent) { } @OverrIDe public boolean onFling(MotionEvent e1, MotionEvent e2, float v, float v1) { // 手势往左滑动10个像素,切换到下一个碎片 if (e1.getX() - e2.getX() > 10) { // 获取返回栈条目个数 int count = getSupportFragmentManager().getBackStackEntryCount(); // 获取碎片索引 count = ++count % 3; // 切换碎片 getSupportFragmentManager().beginTransaction() .addToBackStack("" +count) .replace(R.ID.container, FragmentList.fragments.get(count)) .commit(); } return true; } }); } /** * 将窗口的触摸事件交给收拾侦测器来处理 * * @param event * @return */ @OverrIDe public boolean ontouchEvent(MotionEvent event) { return detector.ontouchEvent(event); }}
七、启动应用,查看效果总结
以上是内存溢出为你收集整理的切换碎片全部内容,希望文章能够帮你解决切换碎片所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)