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

Android Activity与Fragment之间的跳转实例详解

程序员文章站 2024-02-13 23:22:34
activity及fragment之间的跳转 直接跳转 基本使用方法 public class mainactivity extends appcompata...

activity及fragment之间的跳转

直接跳转

基本使用方法

public class mainactivity extends appcompatactivity {

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
  }

  public void jump(view view) {
    intent intent = new intent(this, videoplayactivity.class);
    intent.putextra("video_id", "1");
    startactivity(intent);
  }
}

public class videoplayactivity extends activity {
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_video_play);

    intent intent = getintent();
  }
}

借助工具类

然而并没什么卵用

public static void startactivity(context context, class clazz,bundle data) {
  intent intent = new intent(context, clazz);
  if(data != null){
    intent.putextras(data);
  }
  context.startactivity(intent);
}

推荐方案

  1. 把new intent()放在目标activity,这样可以oncreate里的getintent形成对应
  2. 更容易理解和管理一个出口,多个入口的情况
  3. 较方便维护传递数据的key和value(即key由目标activity来定义,value是实际的来源)
public class mainactivity extends appcompatactivity {

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
  }

  public void jump(view view) {
    startactivity(videoplayactivity.newintent(this, "1"));
  }

}

public class videoplayactivity extends activity {
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_video_play);

  }

  public static intent newintent(context context, string vid) {
    intent intent = new intent(context, videoplayactivity.class);
    intent.putextra("video_id", vid);
    return intent;
  }
}

fragment跳转

  • 首先需要一个空的构造方法,fragment恢复重建要使用。
  • 使用newinstance代替构造方法传参
  • 在fragment.oncreate方法获取实参
public class mainfragment{

  public mainfragment() {
    // required empty public constructor
  }

  public static mainfragment newinstance(int pos) {
    mainfragment fragment = new mainfragment();
    bundle args = new bundle();
    args.putint("pos", pos);
    fragment.setarguments(args);
    return fragment;
  }

  @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    if (getarguments() != null) {
      pos = getarguments().getint("pos");
    }
  }
}

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