欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Fragment的回退栈示例详细介绍

程序员文章站 2024-02-23 11:03:58
android  fragment的回退栈 点开之后按一次回退键只返回一次 mainactivity 类 public class mainac...

android  fragment的回退栈

点开之后按一次回退键只返回一次

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>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!