android acitivity 跳转到fragment,Android Activity与Fragment之间的跳转实例详解

本文介绍了在Android应用程序中,如何优雅地进行Activity和Fragment之间的跳转以及数据传递。推荐将`newIntent()`方法放在目标Activity中,以便更好地管理和理解数据流。对于Fragment,强调了使用静态的`newInstance`方法创建实例,并在`onCreate()`中获取参数的重要性。这种方法提高了代码的可读性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

}

推荐方案

把new Intent()放在目标Activity,这样可以onCreate里的getIntent形成对应

更容易理解和管理一个出口,多个入口的情况

较方便维护传递数据的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");

}

}

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值