Activity之间用Intent传递数据的方式
来源:互联网 发布:2017淘宝黑搜索技术 编辑:程序博客网 时间:2024/06/05 06:24
Activity之间的参数传递
Activity之间和窗口一样,会涉及各种形式的数据交互行为
在Android比较常见的数据交互有以下几种:
1.静态变量共享数据,简单,但是缺点因为是共享数据,所以建议只读,不要修改
2.通过Intent传递,最普遍的方式,没有明显的优缺点
3.通过全局变量来实现数据共享,相对于静态变量共享来说,优缺点是一样,只不过看上去更专业(PRO)
4.带返回的Activity调用,然后Activity结束工作后返回数据,这种方式在特殊状况下必须用到
所有传值和接值都在onCreate()中
通过intent进行Activity之间的参数MainActivity------IntentDataActivity
1.传递一般参数
例如 student对象
传值:
android:name="MyApplication"
只能有一个注册,名字为自定义
传值:
Activity之间和窗口一样,会涉及各种形式的数据交互行为
在Android比较常见的数据交互有以下几种:
1.静态变量共享数据,简单,但是缺点因为是共享数据,所以建议只读,不要修改
2.通过Intent传递,最普遍的方式,没有明显的优缺点
3.通过全局变量来实现数据共享,相对于静态变量共享来说,优缺点是一样,只不过看上去更专业(PRO)
4.带返回的Activity调用,然后Activity结束工作后返回数据,这种方式在特殊状况下必须用到
所有传值和接值都在onCreate()中
通过intent进行Activity之间的参数MainActivity------IntentDataActivity
1.传递一般参数
传值:
Intent intent=new Intent(); intent.setClass(this, IntentDataActivity.class); intent.putExtra("msg", "这是Intent的数据");接值:
Intent intent=getIntent();//获取触发当前Activity的意图对象 String msg1=intent.getStringExtra("msg");2.传递实体
例如 student对象
新建一个student.java
package com.example.activitydemo;import java.io.Serializable;//Serializable序列化接口public class Student implements Serializable{ public String name; public int age;}传值:
Student s=new Student(); s.name="张三"; s.age=18; intent.putExtra("stu", s);接值:
Intent intent=getIntent(); Student stu=(Student)intent.getSerializableExtra("stu"); String msg ="姓名:"+stu.name+"年龄:"+stu.age);3.通过bundle传值:
传值:
Intent intent=new Intent(); intent.setClass(this, IntentDataActivity.class); Bundle bundle=new Bundle(); bundle.putString("msg", "这是Bundle的数据"); intent.putExtras(bundle);接值:
Intent intent=getIntent(); Bundle bundle= intent.getExtras(); String msg2=bundle.getString("msg");
4. 传递bitmap
Intent intent=new Intent(MainActivity.this,TranActivity.class); intent.putExtra("bitmap", bitmap); startActivity(intent);接值:
bitmap=intent.getParcelableExtra("bitmap"); imageview.setImageBitmap(bitmap);
package com.example.activitydemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.TextView;public class MainActivity extends Activity { public void myClick(View view){ Intent intent=new Intent(); switch(view.getId()){ case R.id.btn; intent.setClass(this, ResultActivity.class); startActivityForResult(intent, 1); return ; } startActivity(intent); } //回调方法,在Activity返回到当前Activity的时候自动触发 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode){ case 1: switch(resultCode){ case 200: String msg=data.getStringExtra("msg"); ((TextView)findViewById(R.id.show)).setText(msg); break; } break; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}ResultActivitypackage com.example.activitydemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class ResultActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.result); Button btn=(Button)findViewById(R.id.back); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String msg=((EditText)findViewById(R.id.input)).getText().toString(); Intent intent=new Intent(); intent.putExtra("msg", msg); setResult(200,intent); finish(); } }); }}
全局变量
AndroidManifest.xml 的application标签中注册android:name="MyApplication"
只能有一个注册,名字为自定义
传值:
MyApplication application=(MyApplication)getApplication(); application.put("hello", "world");接值:在任何界面的onCreate()方法中
MyApplication application=(MyApplication)getApplication(); String msg=(String)application.get("hello");带返回的Activity调用,然后Activity结束工作后返回数据,这种方式在特殊状况下用到
0 0
- Activity之间用Intent传递数据的方式
- Activity之间的数据传递: Intent
- android传递数据方式4--通过Intent实现Activity之间的数据传递
- 用Intent在Activity之间传递数据
- 使用 Intent 启动 Activity和Activity之间的数据传递
- 用Intent启动Activity,并在Activity之间传递数据
- android activity之间数据的传递方式
- android activity之间传递数据的方式
- Activity之间数据的传递方式
- Activity之间的数据传递方式
- 利用Intent在不同的activity之间传递数据
- 使用Intent实现activity之间的数据传递
- Android Intent意图用于Activity之间的数据传递
- android中activity之间数据通过Intent的传递
- Intent 意图 用于Activity之间的数据传递
- Intent意图 用于Activity之间的数据传递
- Android 实例:在Activity 之间传递数据的intent
- Android之Activity之间的数据传递-intent-bundle
- Linux下time命令
- 如何将lua移植到arm平台的linux内核
- ios 的点语法和->区别
- C语言main函数参数
- tr命令
- Activity之间用Intent传递数据的方式
- Liferay与Openfire集成 四 简单的二次开发
- 源代码阅读技巧
- Reduce任务的Map输出复制器—ReduceCopier
- C++中的namespace
- django中模板models设置时间
- 树形DP(01组合背包The Ghost Blows Light HDU4276)
- JQuery上传插件Uploadify API详解
- CF#277 (Div. 2) A.(找规律)