Activity启动其他的Activity的和传递数据两种方法
来源:互联网 发布:mac dock栏顺序 编辑:程序博客网 时间:2024/05/21 06:59
1)通过startActivity(Intent intent)启动Activity。
传递参数的方式:putExtra(“key”,values);
或者putExtras(Bundle);
获取参数的方式:getXxxExtra(key)
或者getExtras().getXxx()
注意:Xxx是数据类型
package com.xspacing.activity;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.os.Bundle;import android.view.View;/** * @ClassName MainActivity.java * @Description TODO activity传递数据 * @author smile * @version v1.0 * @date 2016年9月29日 */public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void skip(View v) { // 第一种intent的写法,最常用的 Intent intent = new Intent(MainActivity.this, SecondActivity.class); // 第二种 // Intent intent=new Intent(); // intent.setClass(MainActivity.this,SecondActivity.class); // 第三种 // Intent intent=new Intent(); // ComponentName name=new // ComponentName(MainActivity.this,SecondActivity.class); // intent.setComponent(name); // 第一种封装传递的数据 name, value:键值对的形式存储 intent.putExtra("data", "我是传递的数据"); // 第二种 // Bundle bundle=new Bundle(); // bundle.putString("data", "我是bundle的封装的数据"); // intent.putExtras(bundle); startActivity(intent); }}
package com.xspacing.activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Window;public class SecondActivity extends Activity { private static final String TAG = "SecondActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_second); initDatas(); } private void initDatas() { //对应着第一种封装数据的取数据 Intent intent = getIntent(); String string = intent.getStringExtra("data"); Log.i(TAG, string); //对应着第二种封装数据的取数据 // Intent intent = getIntent(); // Bundle bundle = intent.getExtras(); // String string = bundle.getString("data");// Log.i(TAG, string); }}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.xspacing.activity.MainActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="skip" android:text="第一种方法传递数据" /></LinearLayout>
(2)通过startActivityForResult(Intent intent,int requestCode):
( 以指定的请求码启动Activity,而且程序将会等待新启动Activity的结果。一般情况下,我们只需要保证requestCode>-1即可,这样它都能收到result。但是如果在A activity中,
能够跳转到多个activiity,并且要接受到这多个activity中的信息的时候,我们就要注意了,这时候,requestCode就起大作用了,当你startActiviityForResult()的时候, 给每一个不同的activity一个独立的requestcode,那么在你接受到result的时候就可以通过这个参数来判断,结果是那个acitivity返回来的了)
启动的Activity重写onActivityResult()
被启动的Activity返回数据:setResult(int,Intent).
package com.xspacing.activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;/** * @ClassName MainActivity.java * @Description TODO activity传递数据 * @author smile * @version v1.0 * @date 2016年9月29日 */public class MainActivity extends Activity { public static final int REQUEST_CODE = 0x001; private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void skip(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("data", "我是传递的数据"); startActivityForResult(intent, REQUEST_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //根据结果码和请求码判断是否是SecondActivity传递的数据 if (requestCode==REQUEST_CODE&&resultCode==SecondActivity.RESULT_CODE) { String string = data.getStringExtra("second"); Log.i(TAG, string); } super.onActivityResult(requestCode, resultCode, data); }}
package com.xspacing.activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.Window;public class SecondActivity extends Activity { private static final String TAG = "SecondActivity"; public static final int RESULT_CODE = 0x002; private Intent mIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_second); initDatas(); } private void initDatas() { mIntent = getIntent(); String string = mIntent.getStringExtra("data"); Log.i(TAG, string); } public void back(View v){ if (mIntent==null) { mIntent=new Intent(); } mIntent.putExtra("second", "我是第二个activity传递的数据"); setResult(RESULT_CODE, mIntent); finish();//关闭当前activity,这个不能少不然,SecondActivity依然显示 }}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.xspacing.activity.MainActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="skip" android:text="第二种方法带返回值的传递数据" /></LinearLayout>
activity_second.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="back" android:text="返回MainActivity" /></LinearLayout>
0 0
- Activity启动其他的Activity的和传递数据两种方法
- Activity启动其他的Activity的两种方式
- Activity和Fragment传递数据的两种方式
- Activity和Fragment传递数据的两种方式
- (转)Activity和Fragment传递数据的两种方式
- Activity和Fragment传递数据的两种方式
- 使用 Intent 启动 Activity和Activity之间的数据传递
- Activity和Fragment两两之间的数据传递
- Fragment和Activity之间的数据传递(两种:Acitvity-->Fragment;Fragment---->Activity)
- android:两种启动activity的方法
- Android Activity启动的两种方法
- android启动Activity的两种方法
- Activity生命周期,启动Activity,以及Activity之间数据的传递
- activity传递数据的方法
- 启动其他APK的Activity方法
- 启动其他APK的Activity方法
- Android开发——Activity启动其他Activity的两种方式
- 初学之安卓的两种activity间传递数据的方法
- Oracle 查看表空间的大小及使用情况sql语句
- 基于状态机的按键扫描的实现
- 位运算简介及实用技巧(三):进阶篇(2)
- 【Jmeter】获取数据库表数据作为参数
- 8 分组元素
- Activity启动其他的Activity的和传递数据两种方法
- 9 表单元素
- 281_Date和String转化
- HTML学习笔记-html标签(二)
- java 抢红包的随机钱数分配问题
- VPN云免搭建
- 282_inflate方法使用
- HTML5打飞字游戏--移植本地
- ORA-12505, TNS:listener does not currently know of SID given in connect descriptor异常