`
dcj3sjt126com
  • 浏览: 1877522 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android开发10——Activity的跳转与传值

 
阅读更多

Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据。

 


一、Activity跳转

方法一
Intent intent = new Intent(A.this, B.class); 
startActivity(intent)

 

方法二
Intent intent = new Intent();
intent.setClass(A.this, B.class);
startActivity(intent);

实现从A跳转到B(A、B均继承自Activity)

 

 

二、传递数据

Activity A 传递数据

方法一
Intent intent = new Intent();
intent.setClass(A.this, B.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 22);

startActivity(intent);

 

方法二
Intent intent = new Intent(A.this, B.class); 
Bundle bundle = new Bundle();
bundle.putString("name", "xy");
bundle.putInt("age", 22);

intent.putExtras(bundle);
startActivity(intent);

 


Activity B 接收数据


// 获取参数1
Intent intent = this.getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 22); // 缺省值为22

// 获取参数2
Bundle bundle = intent.getExtras();
String name2 = bundle.getString("name");
int age2 = bundle.getInt("age", 22);

两种获取参数方式均可,并不是和传参1,2方法一一对应

 


三、Activity返回值

跳转后前一个Activity已经被destroy了。如若要返回并显示数据,就必须将前一个Activity再次唤醒,同时调用某个方法来获取并显示数据。做法如下

1.从A页面跳转到B页面时不可使用startActivity()方法,而要使用startActivityForResult()方法

2.在A页面的Activity中,需要重写onActivityResult(int requestCode, int resultCode, Intent data)方法

  

Activity A

[java] 
// 有返回值的Activity  
public void openNewActivity2(View v) 

 Intent intent = new Intent(); 
 intent.setClass(this.getApplicationContext(), OtherActivity2.class); 
 intent.putExtra("name", "xy"); 
 intent.putExtra("age", 20); 
 startActivityForResult(intent, 1); 

 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 

 // requestCode用于区分业务  
 // resultCode用于区分某种业务的执行情况  
 if (1 == requestCode && RESULT_OK == resultCode) 
 { 
  String result = data.getStringExtra("result"); 
  Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show(); 
 } 
 else 
 { 
  Toast.makeText(this.getBaseContext(), "无返回值", Toast.LENGTH_SHORT).show(); 
 } 

 // 有返回值的Activity
 public void openNewActivity2(View v)
 {
  Intent intent = new Intent();
  intent.setClass(this.getApplicationContext(), OtherActivity2.class);
  intent.putExtra("name", "xy");
  intent.putExtra("age", 20);
  startActivityForResult(intent, 1);
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data)
 {
  // requestCode用于区分业务
  // resultCode用于区分某种业务的执行情况
  if (1 == requestCode && RESULT_OK == resultCode)
  {
   String result = data.getStringExtra("result");
   Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show();
  }
  else
  {
   Toast.makeText(this.getBaseContext(), "无返回值", Toast.LENGTH_SHORT).show();
  }
 }


Activity B

[java]
public void close(View v) 

 Intent intent = new Intent(); 
 intent.putExtra("result", "返回值"); 
 this.setResult(RESULT_OK, intent); // 设置结果数据  
 this.finish(); // 关闭Activity  

 public void close(View v)
 {
  Intent intent = new Intent();
  intent.putExtra("result", "返回值");
  this.setResult(RESULT_OK, intent); // 设置结果数据
  this.finish(); // 关闭Activity
 }

 


 

Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据。

 


一、Activity跳转

方法一
Intent intent = new Intent(A.this, B.class); 
startActivity(intent)

 

方法二
Intent intent = new Intent();
intent.setClass(A.this, B.class);
startActivity(intent);

实现从A跳转到B(A、B均继承自Activity)

 

 

二、传递数据

Activity A 传递数据

方法一
Intent intent = new Intent();
intent.setClass(A.this, B.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 22);

startActivity(intent);

 

方法二
Intent intent = new Intent(A.this, B.class); 
Bundle bundle = new Bundle();
bundle.putString("name", "xy");
bundle.putInt("age", 22);

intent.putExtras(bundle);
startActivity(intent);

 


Activity B 接收数据


// 获取参数1
Intent intent = this.getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 22); // 缺省值为22

// 获取参数2
Bundle bundle = intent.getExtras();
String name2 = bundle.getString("name");
int age2 = bundle.getInt("age", 22);

两种获取参数方式均可,并不是和传参1,2方法一一对应

 


三、Activity返回值

跳转后前一个Activity已经被destroy了。如若要返回并显示数据,就必须将前一个Activity再次唤醒,同时调用某个方法来获取并显示数据。做法如下

1.从A页面跳转到B页面时不可使用startActivity()方法,而要使用startActivityForResult()方法

2.在A页面的Activity中,需要重写onActivityResult(int requestCode, int resultCode, Intent data)方法

  

Activity A

[java] 
// 有返回值的Activity  
public void openNewActivity2(View v) 

 Intent intent = new Intent(); 
 intent.setClass(this.getApplicationContext(), OtherActivity2.class); 
 intent.putExtra("name", "xy"); 
 intent.putExtra("age", 20); 
 startActivityForResult(intent, 1); 

 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 

 // requestCode用于区分业务  
 // resultCode用于区分某种业务的执行情况  
 if (1 == requestCode && RESULT_OK == resultCode) 
 { 
  String result = data.getStringExtra("result"); 
  Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show(); 
 } 
 else 
 { 
  Toast.makeText(this.getBaseContext(), "无返回值", Toast.LENGTH_SHORT).show(); 
 } 

 // 有返回值的Activity
 public void openNewActivity2(View v)
 {
  Intent intent = new Intent();
  intent.setClass(this.getApplicationContext(), OtherActivity2.class);
  intent.putExtra("name", "xy");
  intent.putExtra("age", 20);
  startActivityForResult(intent, 1);
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data)
 {
  // requestCode用于区分业务
  // resultCode用于区分某种业务的执行情况
  if (1 == requestCode && RESULT_OK == resultCode)
  {
   String result = data.getStringExtra("result");
   Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show();
  }
  else
  {
   Toast.makeText(this.getBaseContext(), "无返回值", Toast.LENGTH_SHORT).show();
  }
 }


Activity B

[java]
public void close(View v) 

 Intent intent = new Intent(); 
 intent.putExtra("result", "返回值"); 
 this.setResult(RESULT_OK, intent); // 设置结果数据  
 this.finish(); // 关闭Activity  

 public void close(View v)
 {
  Intent intent = new Intent();
  intent.putExtra("result", "返回值");
  this.setResult(RESULT_OK, intent); // 设置结果数据
  this.finish(); // 关闭Activity
 }

分享到:
评论

相关推荐

    Android-Service与Activity传值

    在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...

    安卓Android源码——(Activity跳转与操作).zip

    这个压缩包文件“安卓Android源码——(Activity跳转与操作).zip”显然专注于讲解如何在Android系统中进行Activity的跳转和操作。以下是关于这个主题的详细知识点: 一、Activity生命周期 1. Activity有七个关键状态...

    Android四大组件——Activity(一)Activity之间通信及其生命周期变化

    在Android应用开发中,Activity是四大组件之一,它是用户与应用程序交互的主要界面。理解Activity的通信方式和生命周期变化是每个Android开发者必须掌握的基础知识。在本篇内容中,我们将深入探讨Activity之间的通信...

    Android开发中Activity创建跳转及传值的方法

    在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider)。...本篇博客要介绍的内容是活动的创建,活动的跳转与值的透传。 iOS中的V

    Android四大组件——Activity——Activity的生命周期.doc

    Android 四大组件——Activity——Activity 的生命周期 Android 四大组件中的 Activity 是一个非常重要的组件,它是用户与应用程序交互的入口。Activity 的生命周期是指从创建到销毁的整个过程,在这个过程中,...

    Android Activity的跳转与传值详解

    Android Activity的跳转与传值详解 Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据。  Intent是Android一个很重要的类。Intent直译是“意图”,什么是意图呢?比如你想从这个Activity...

    安卓Android源码——(Activity跳转与操作).rar

    本文将深入探讨Android源码中的Activity跳转与操作,这对于我们理解和优化应用性能至关重要。 首先,Activity的启动过程涉及到Intent的创建与传递。Intent在Android中起到了消息传递的作用,它用于在组件之间传递...

    android界面跳转与传值

    android界面跳转与传值 android中Activity的跳转和值通过SharedPreferences传递。

    Android-SmartGo通过编译时注解生成文件简化Activity跳转时传值及取值

    "Android-SmartGo"项目正是这样一个实践,它通过编译时注解生成文件,实现了在Activity跳转时自动处理传值和取值,极大地提高了开发效率和代码可读性。 SmartGo的核心思想是利用Java的注解(Annotation)和APT...

    activity之间的传值demo

    总结,Activity间的传值是Android开发中的基础操作,理解并熟练掌握Intent的使用对于构建功能丰富的应用程序至关重要。通过`IntentDemo1`这样的实战练习,开发者可以更好地理解和应用这些概念,从而提升开发效率。在...

    Android Activity跳转和listview的使用

    理解Activity的跳转和ListView的使用是Android开发中至关重要的技能。在这个主题中,我们将深入探讨如何通过Intent和Bundle实现Activity间的参数传递和跳转,以及如何在ListView中设置Item的点击事件处理。 首先,...

    Android开发 两个Activity之间通过Intent跳转传值

    在Android应用开发中,Intent是连接应用程序组件的重要桥梁,它被用来启动新的Activity或Service,也可以传递数据。本文将深入探讨如何在两个Activity之间通过Intent进行数据传递。 首先,理解Intent的基本概念。...

    Android开发之5.0activity跳转时共享元素的使用方法

    Android 5.0 中 Activity 跳转时共享元素的使用方法 Android 5.0 中的 Activity 跳转时共享元素的使用方法是指在两个 Activity 之间共享视图元素的技术手段。这种技术可以实现 Activity 之间的无缝跳转,提高用户...

    Android学习3——Activity生命周期

    在Android应用开发中,Activity是用户界面的基本组件,它负责与用户进行交互。理解Activity的生命周期至关重要,因为这直接影响到应用程序的行为和性能。在“Android学习3——Activity生命周期”这个主题中,我们将...

    android实现activity直接的传值问题

    在Android开发中,Activity是应用程序的基本组件,负责用户界面的展示和交互。当需要在不同的Activity之间传递数据时,Android提供了多种方式来实现这一功能。本文将深入探讨如何在Android中实现在Activity之间直接...

    动手学Android之七——Activity生命周期

    "动手学Android之七——Activity生命周期"这个主题深入探讨了Activity如何在应用程序中创建、运行、暂停、停止以及销毁的过程,这对于理解和优化应用性能至关重要。在这个例子程序中,开发者将有机会实践这些生命...

    Android Activity之间传值

    在Android应用开发中,Activity是应用程序的基本组件,用于展示用户界面和处理用户交互。Activity之间的数据传递是一个常见的需求,尤其在构建多层级、复杂交互的应用时。本篇将详细讲解如何在Android Studio 3.1...

    Android_activity向fragment传值 对应45

    在Android应用开发中,Activity和Fragment是两个核心组件。Activity作为应用程序的主要入口点,而Fragment则可以看作是Activity中的可重用模块,它们共同构建了丰富的用户界面。当需要在Activity与Fragment之间进行...

Global site tag (gtag.js) - Google Analytics