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);
}
});
补充:移动开发 , Android ,