在android中,我们经常会从一个activity将数据传递到另外的一个activity中,而且还要从另外的activity中获取返回的数据,
其实在android中有很多方法可以做到,比如使用Application或者是Bundle来进行数据传递.今天就看看使用Bundle来进
行数据传递的例子.
这个例子里面使用了Bundle从第一个activity传递了数据到第二个里面,而第二个处理完之后,又将数据返回给了第一个.
具体实现请看代码
---------------------ActivityBundle.java------------------------
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; import android.widget.RadioButton; public class ActivityBundle extends Activity { private RadioButton rbMan; private RadioButton rbWoman; private EditText editHight; private Button btnOK; private double body_height; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { //结果返回 case RESULT_OK: //获取Bundle的数据 Bundle bl= data.getExtras(); String sex=bl.getString("sex"); if (sex.equals("M")) { rbMan.setChecked(true); } else { rbWoman.setChecked(true); } body_height=bl.getDouble("height"); editHight.setText(""+body_height); break; default: break; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnOK = (Button) findViewById(R.id.btn_calc); rbMan = (RadioButton) findViewById(R.id.radio_man); rbWoman = (RadioButton) findViewById(R.id.radio_woman); editHight = (EditText) findViewById(R.id.text_edit); btnOK.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { body_height = Double.parseDouble(editHight.getText() .toString()); } catch (Exception e) { body_height = 0; } String sex = ""; if (rbMan.isChecked()) { sex = "M"; } else { sex = "F"; } //通过intent跳转到下一个页面. Intent intent = new Intent(); intent.setClass(ActivityBundle.this, ResultActivity.class); //通过Bundle来获取数据,通过key-Value的方式放入数据 Bundle bl = new Bundle(); bl.putDouble("height", body_height); bl.putString("sex", sex); //将Bundle放入Intent传入下一个Activity intent.putExtras(bl); //跳到下一个Activity,并且等待其返回结果 startActivityForResult(intent, 0); //不能够在这个Activity调用了startActivityForResult之后调用finsh() //否则无法接收到返回 } }); } }
-----------------------ResultActivity.java----------------------
import java.text.DecimalFormat; import java.text.NumberFormat; 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.TextView; public class ResultActivity extends Activity { Bundle bl; Intent intent; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.result); //获取到上一个页面传过来的Intent intent=this.getIntent(); //获取Intent中的Bundle数据 bl=intent.getExtras(); String sex=bl.getString("sex"); double height=bl.getDouble("height"); String sexText=""; if (sex.equals("M")) { sexText="男性"; } else { sexText="女性"; } String weight=getWeight(sex,height); TextView tv1=(TextView)findViewById(R.id.TextView01); tv1.setText("你是一位"+sexText); TextView tv2=(TextView)findViewById(R.id.TextView02); tv2.setText("你的身高是"+height+"厘米"); TextView tv3=(TextView)findViewById(R.id.TextView03); tv3.setText("你的标准体重是"+weight+"公斤"); btn=(Button)findViewById(R.id.btn_back); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //将intent传会上一个Activity ResultActivity.this.setResult(RESULT_OK, intent); ResultActivity.this.finish(); } }); } private String format(double num) { NumberFormat nf =new DecimalFormat("0.00"); String s=nf.format(num); return s; } private String getWeight(String sex,double height) { String weight=""; if (sex.equals("M")) { weight=format((height-80)*0.7); } else { weight=format((height-70)*0.6); } return weight; } } ---------------mann.xml-----------------
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingBottom="4dip" android:paddingLeft="12dip" android:paddingTop="4dip" android:paddingRight="12dip" > <TextView android:id="@+id/title_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:id="@+id/text_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="20sp" android:layout_below="@+id/title_view" android:text="@string/str_text" /> <TextView android:id="@+id/text_weight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_below="@+id/text_title" android:text="@string/str_weight" /> <RadioGroup android:id="@+id/RadioGroup01" android:layout_width="wrap_content" android:layout_below="@+id/text_title" android:layout_toRightOf="@+id/text_weight" android:orientation="horizontal" android:checkedButton="@+id/radio_man" android:layout_height="wrap_content"> <RadioButton android:id="@+id/radio_man" android:text="@string/str_man" /> <RadioButton android:id="@+id/radio_woman" android:text="@string/str_woman" /> </RadioGroup> <TextView android:id="@+id/text_height" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_below="@+id/RadioGroup01" android:text="@string/str_height" /> <EditText android:id="@+id/text_edit" android:layout_width="200dip" android:layout_height="wrap_content" android:layout_below="@+id/RadioGroup01" android:layout_toRightOf="@+id/text_height" android:numeric="decimal" /> <Button android:layout_width="wrap_content" android:text="@string/str_calc" android:layout_below="@+id/text_edit" android:id="@+id/btn_calc" android:layout_toRightOf="@+id/text_height" android:layout_height="wrap_content"> </Button> <TextView android:id="@+id/text_cm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/RadioGroup01" android:textSize="20sp" android:layout_toRightOf="@+id/text_edit" android:text="@string/str_cm" /> </RelativeLayout>
----------------result.xml-----------------
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TableLayout android:id="@+id/TableLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout01" android:paddingLeft="12dip" android:paddingRight="12dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="20sp"> </TextView> </RelativeLayout> </TableRow> <TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout02" android:paddingLeft="12dip" android:paddingRight="12dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"> </TextView> </RelativeLayout> </TableRow> <TableRow android:id="@+id/TableRow03" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout03" android:paddingLeft="12dip" android:paddingRight="12dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"></TextView> </RelativeLayout> </TableRow> <TableRow android:id="@+id/TableRow04" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout04" android:paddingLeft="12dip" android:paddingRight="12dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"> </TextView> </RelativeLayout> </TableRow> <TableRow android:id="@+id/TableRow05" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout05" android:paddingLeft="40dip" android:paddingRight="40dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:text="@string/back_view" android:id="@+id/btn_back" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </RelativeLayout> </TableRow> </TableLayout> </LinearLayout>
---------------AndroidManifest.xml----------------
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="activity.bundle" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ActivityBundle" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="ResultActivity"/> </application> </manifest>