在android的开发中不同页面中Activity的切换以及原理讲解,本实例中从ActivityBundle页面中切换至ResultActivity,点击返回至返回页面:
原理将页面ActivityBundle切换ResultActivity页面,将height,sex信息存储在Bundle中,在另一个页面中获取:
//通过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中获取切换bundle中信息。
setContentView(R.layout.resultlayout);
//获取到上一个页面传过来的Intent
intent=this.getIntent();
//获取Intent中的Bundle数据
bl=intent.getExtras();
String sex=bl.getString("sex");
double height=bl.getDouble("height");
源代码如下:
package com.easyway.android.weather.switchwidget;
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;
/**
* 个人信息体重信息界面
* @author longgangbai
*
*/
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()
//否则无法接收到返回
}
});
}
}
package com.easyway.android.weather.switchwidget;
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;
/**
* 结果显示测试界面
* @author longgangbai
*
*/
public class ResultActivity extends Activity
{
Bundle bl;
Intent intent;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.resultlayout);
//获取到上一个页面传过来的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;
}
}
main.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="体重计算" /> <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="计算你的标准体重" /> <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="体重:" /> <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="男" /> <RadioButton android:id="@+id/radio_woman" android:text="女" /> </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="身高:" /> <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="计算" 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="厘米" /> </RelativeLayout>
resultlayout.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="返回上一个页面" 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="com.easyway.android.weather.switchwidget" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="14" /> <application android:icon="@drawable/ic_launcher" 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>