activity之间参数传递
来源:互联网 发布:python 示例 编辑:程序博客网 时间:2024/05/02 01:42
这一节介绍一下activity之间参数传递。我们知道用intent可以实现activity之间相互跳转,在跳转的同时我们不免也需要传递一些参数,下面就介绍一下如何在一个activity里传递参数,在另一个activity里接受参数。
activity之间有两种参数传递形式:一种是一个activity启动另一个activity的时候传递数据到另一个activity,然后在activity中接受到数据,做相应处理。另一种是一个activity启动另个一activity传递数据,当另个一activity窗口关闭后,在传递数据到启动它的那个activity。
我们先看一下第一种方式
首先先建立一个ActivityDemo项目:
- public class MainDemoActivity extends Activity {
- private Button button1,button2;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- button1=(Button) this.findViewById(R.id.button1);
- button2=(Button) this.findViewById(R.id.button2);
- button1.setOnClickListener(new MyListener());
- button2.setOnClickListener(new MyListener());
- }
- private class MyListener implements View.OnClickListener{
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent intent=new Intent();
- if(v==button1){
- intent.setClass(MainDemoActivity.this, FirstDemoActivity.class);
- }else if(v==button2){
- intent.setClass(MainDemoActivity.this, ResultDemoActivity.class);
- }
- startActivity(intent);
- }
- }
- }
接着给出main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <Button
- android:id="@+id/button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="传递参数不得到返回值" />
- <Button
- android:id="@+id/button2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="传递参数得到返回值" />
- </LinearLayout>
看一下第一种是怎么传递参数的:
- public class FirstDemoActivity extends Activity {
- private Button button3;
- private EditText editText;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.first);
- button3=(Button) this.findViewById(R.id.button3);
- editText=(EditText) this.findViewById(R.id.editText1);
- button3.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- // TODO Auto-generated method stub
- String content=editText.getText().toString();
- Intent intent=new Intent(FirstDemoActivity.this,SecondDemoActivity.class);
- //可以把要传递的参数放到一个bundle里传递过去,bundle可以看做一个特殊的map.
- Bundle bundle=new Bundle();
- bundle.putString("result", "第一个activity的内容");
- bundle.putString("content",content);
- intent.putExtras(bundle);
- //也可以用这种方式传递.
- //intent.putExtra("result", "第一个activity的内容");
- startActivity(intent);
- }
- });
- }
- }
看一下在SecondDemoActivity中怎么接受参数:
- public class SecondDemoActivity extends Activity {
- private TextView textView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.second);
- textView=(TextView) this.findViewById(R.id.textView3);
- Intent intent=getIntent();
- String result=intent.getStringExtra("result");
- String content=intent.getStringExtra("content");
- textView.setText(result+" : "+content);
- }
- }
启动,看一下运行效果:
点击发送按钮:
OK! 成功。
接下来看看第二种方式:
先看一下页面的布局文件:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello" />
- </LinearLayout>
核心代码:
- public class ResultDemoActivity extends Activity {
- /** Called when the activity is first created. */
- private TextView text;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.result);
- text=(TextView)this.findViewById(R.id.text);
- pickContact();
- }
- private void pickContact(){
- Intent intent=new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
- //在这里也可以传递一些参数
- //intent.putExtra(name, value)
- //第二个参数就是onActivityResult 里得第一个参数。
- startActivityForResult(intent,1);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- // TODO Auto-generated method stub
- if(resultCode==Activity.RESULT_OK && requestCode==1){
- Cursor cusor=this.getContentResolver()
- .query(data.getData(), new String[]{ContactsContract.Contacts.DISPLAY_NAME},
- null, null, null);
- if(cusor.moveToFirst()){
- String str=cusor.getString(cusor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
- text.setText(str);
- }
- }
- }
- }
代码我想大家都看的懂吧!不懂得看我以前的使用Content Provider得到联系人信息这一节
看一下运行效果:
这是我通讯录的联系人。点击listview:
返回到了ResultDemoActivity并得到了联系人的名字。
- activity之间参数传递
- activity之间参数传递
- activity之间参数传递
- activity之间参数传递
- Activity之间传递参数
- Activity之间传递参数
- android activity之间传递参数
- android activity之间传递参数
- android activity之间参数传递
- activity之间的参数传递
- 两个Activity之间传递参数
- Android Activity之间参数传递
- Activity之间的参数传递
- 两个Activity 之间传递参数
- Activity之间参数传递方式
- 在Activity之间传递参数
- Activity之间信息传递(参数传递)
- Android中Activity之间传递参数
- java中public class与class区别
- UVa10701 - Pre, in and post
- 制作U盘启动系统镜像方法
- Java NIO原理和使用
- windows 7 快捷方式
- activity之间参数传递
- ios 流媒体 MpMovieplayerController
- NGINX 自定义404(或其他)error页面
- 寒门再难出贵子
- R语言入门 一些基本的操作
- 实现iphone/Ipad 删除应用的颤抖动画效果
- arduino+android好项目
- easyui 模态窗口插件,局部模态,伪模态
- Bits Equalizer 组队赛第二场Regionals 2012, Europe - Southwestern B题