Android Fragment的回退栈示例详细介绍
程序员文章站
2024-02-25 22:43:57
android fragment的回退栈
点开之后按一次回退键只返回一次
mainactivity 类
public class mainac...
android fragment的回退栈
点开之后按一次回退键只返回一次
mainactivity 类
public class mainactivity extends appcompatactivity { listview lv; list<article> mlist = new arraylist<>(); contentfragment fragment; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); lv = (listview) findviewbyid(r.id.lv); //找到xml中静态创建的fragment // fragment = (contentfragment) getsupportfragmentmanager().findfragmentbytag("fragment"); // //获取到引用 // fragment.showtoask("这是activity中调用fragment中的方法"); initdata(); lv.setadapter(adapter); lv.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { article a = mlist.get(position); contentfragment fragment = new contentfragment(); //activity向新建的fragment传参 bundle bundle = new bundle(); bundle.putserializable("article",a); fragment.setarguments(bundle); //去显示 fragmenttransaction ft = getsupportfragmentmanager().begintransaction(); ft.replace(r.id.fl_content,fragment); //添加回退栈 ft.addtobackstack(null); ft.commit(); } }); } public void showtoask(string msg){ toast.maketext(this,msg,toast.length_short).show(); } private void initdata() { mlist.add(new article("*会见菲总统:把分歧管控好 把合作谈起来", "*指出,中菲是隔海相望的近邻,两国人民是血缘相亲的兄弟。中菲同为发展中国家,团结、互助、合作、发展是我们的共同目标。虽然我们之间经历风 雨,但睦邻友好的情感基础和合作意愿没有变。中方高度重视中菲关系,愿同菲方一道努力,不断增进政治互信、深化互利合作、妥善处理分歧,做感情上相近相 通、合作中互帮互助、发展中携手前行的睦邻友好伙伴。")); mlist.add(new article("外交部官员", "。中菲同为发展中国家,团结、互助、合作、发展是我们的共同目标。虽然我们之间经历风 雨,但睦邻友好的情感基础和合作意愿没有变。中方高度重视中菲关系,愿同菲方一道努力,不断增进政治互信、深化互利合作、妥善处理分歧,做感情上相近相 通、合作中互帮互助、发展中携手前行的睦邻友好伙伴。")); mlist.add(new article("洪秀柱邀*4巨头谈党产议题 马英九将出席:把分歧管控好 把合作谈起来", "邻,两国人民是血缘相亲的兄弟。中菲同为发展中国家,团结、互助、合作、发展是我们的共同目标。虽然我们之间经历风 雨,但睦邻友好的情感基础和合作意愿没有变。中方高度重视中菲关系,愿同菲方一道努力,不断增进政治互信、深化互利合作、妥善处理分歧,做感情上相近相 通、合作中互帮互助、发展中携手前行的睦邻友好伙伴。")); } class article implements serializable{ string title; string content; public article( string title,string content) { this.title = title; this.content = content; } } private baseadapter adapter = new baseadapter() { @override public int getcount() { return mlist.size(); } @override public article getitem(int position) { return mlist.get(position); } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { if (convertview == null) convertview = new textview(mainactivity.this); textview tv = (textview) convertview; tv.settext(mlist.get(position).title); return convertview; } }; }
contentfragment 类
public class contentfragment extends fragment { @nullable @override public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) { return view.inflate(getactivity(), android.r.layout.simple_list_item_2, null); } @override public void onviewcreated(view view, @nullable bundle savedinstancestate) { super.onviewcreated(view, savedinstancestate); textview text1 = (textview) view.findviewbyid(android.r.id.text1); textview text2 = (textview) view.findviewbyid(android.r.id.text2); bundle bundle = getarguments(); if (bundle == null) { text1.settext("测试"); text2.settext("测试内容"); } else { mainactivity.article article = (mainactivity.article) bundle.get("article"); text1.settext(article.title); text2.settext(article.content); } //开始调用 mainactivity activity = (mainactivity) getactivity(); activity.showtoask("这是fragment中调用activity中的方法"); } public void showtoask(string msg){ toast.maketext(getactivity(),msg,toast.length_short).show(); } }
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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context="com.example.backstack10_20.mainactivity"> <!--<fragment--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="match_parent"--> <!--android:layout_weight="1"--> <!--android:tag="fragment"--> <!--android:name="com.example.backstack10_20.contentfragment"--> <!--/>--> <listview android:layout_width="0dp" android:layout_weight="1" android:id="@+id/lv" android:layout_height="wrap_content"/> <framelayout android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" android:id="@+id/fl_content"/> </linearlayout>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!