展会信息港展会大全

android activity之间参数传递
来源:互联网   发布日期:2016-01-14 10:01:07   浏览:2102次  

导读:这一节介绍一下activity之间参数传递。我们知道用intent可以实现activity之间相互跳转,在跳转的同时我们不免也需要传递一些参数,下面就介绍一下如何在一个activity里传递参数,在另一个activity里接受参数。 ......

这一节介绍一下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 参数传递

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港