Activity的跳转及返回值 的四种方法

Activity是Android中非常重要的一个组件,在开发过程中经常需要进行页面的跳转和传递数据。本文将详细介绍Activity的四种跳转方式以及返回值的处理方法,并举例说明。

一、Activity的四种跳转方式

1. startActivity()

startActivity()是最常用的Activity跳转方式,它用来启动一个新的Activity,并将控制权交给新的Activity。

Intent intent = new Intent(this, TargetActivity.class);

startActivity(intent);

2. startActivityForResult()

startActivityForResult()方法也是启动一个新的Activity,不同的是,它会等待目标Activity返回结果后再返回调用Activity。在目标Activity中,使用setResult()将结果返回给调用Activity。

//在源Activity中跳转

Intent intent = new Intent(this, TargetActivity.class);

startActivityForResult(intent, 1);

//在目标Activity中返回结果

Intent intent = new Intent();

intent.putExtra("result", "success");

setResult(RESULT_OK, intent);

finish();

通过重写调用Activity中的onActivityResult()方法,可以获取到目标Activity返回的结果。

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1 && resultCode == RESULT_OK) {

String result = data.getStringExtra("result");

Toast.makeText(this, "返回结果:" + result, Toast.LENGTH_SHORT).show();

}

}

3. startActivityWithTransition()

startActivityWithTransition()方法用来启动一个新的Activity,并提供一个过渡动画。需要注意的是,这个方法只支持API 16及以上的版本。

if(Build.VERSION.SDK_INT >= 16){

ActivityOptions options = ActivityOptions.makeScaleUpAnimation(view,0,0,view.getWidth(),view.getHeight());

Intent intent = new Intent(this, TargetActivity.class);

startActivity(intent,options.toBundle());

}

else{

startActivity(new Intent(this, TargetActivity.class));

}

4. startActivityIfNeeded()

startActivityIfNeeded()方法用来判断是否需要启动一个新的Activity。如果当前已经有一个该Activity的实例存在,则不需要再启动一个新的Activity,反之则需要。

Intent intent = new Intent(this, TargetActivity.class);

startActivityIfNeeded(intent, 0);

二、Activity的返回值处理

1. setResult()方法

在目标Activity中使用setResult()方法设置返回值,并调用finish()方法结束目标Activity。

//在目标Activity中返回结果

Intent intent = new Intent();

intent.putExtra("result", "success");

setResult(RESULT_OK, intent);

finish();

2. onActivityResult()方法

重写调用Activity中的onActivityResult()方法,获取目标Activity返回的结果。

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1 && resultCode == RESULT_OK) {

String result = data.getStringExtra("result");

Toast.makeText(this, "返回结果:" + result, Toast.LENGTH_SHORT).show();

}

}

3. setResult()和onActivityResult()方法配合使用

在目标Activity中设置返回值,并调用finish()方法结束目标Activity。在调用Activity中重写onActivityResult()方法,根据requestCode和resultCode判断返回值是否正确,并获取数据。

//在目标Activity中返回结果

Intent intent = new Intent();

intent.putExtra("result", "success");

setResult(RESULT_OK, intent);

finish();

//在调用Activity中获取结果

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1 && resultCode == RESULT_OK) {

String result = data.getStringExtra("result");

Toast.makeText(this, "返回结果:" + result, Toast.LENGTH_SHORT).show();

}

}

4. setResult()和finish()方法配合使用

在目标Activity中设置返回值,并直接调用finish()方法结束目标Activity。在调用Activity中重写onActivityResult()方法,根据resultCode判断返回值是否正确,并获取数据。

//在目标Activity中返回结果并结束Activity

Intent intent = new Intent();

intent.putExtra("result", "success");

setResult(RESULT_OK, intent);

finish();

//在调用Activity中获取结果

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (resultCode == RESULT_OK) {

String result = data.getStringExtra("result");

Toast.makeText(this, "返回结果:" + result, Toast.LENGTH_SHORT).show();

}

}

三、举例说明

1.使用startActivity()跳转Activity

//在MainActivity中跳转至SecondActivity

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

startActivity(intent);

2.使用startActivityForResult()跳转Activity并获取返回值

//在MainActivity中跳转至SecondActivity

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

startActivityForResult(intent, 1);

//在SecondActivity中返回结果

Intent intent = new Intent();

intent.putExtra("result", "success");

setResult(RESULT_OK, intent);

finish();

//在MainActivity中获取返回值

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1 && resultCode == RESULT_OK) {

String result = data.getStringExtra("result");

Toast.makeText(this, "返回结果:" + result, Toast.LENGTH_SHORT).show();

}

}

3.使用startActivityIfNeeded()判断是否需要跳转Activity

//在MainActivity中判断是否需要跳转至SecondActivity

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

startActivityIfNeeded(intent, 0);

四、总结

本文介绍了四种Activity的跳转方式和返回值处理方法,并提供具体代码示例,为开发者提供了更好的实现逻辑和使用场景。在实际开发中,需要根据具体需求选择合适的跳转方式,并注意处理返回值,以保证功能的完整性和稳定性。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(85) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部