Android中不同Activity的切换
16lz
2021-01-26
在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传入下一个Activityintent.putExtras(bl);//跳到下一个Activity,并且等待其返回结果startActivityForResult(intent, 0);//不能够在这个Activity调用了startActivityForResult之后调用finsh()//否则无法接收到返回
在ResultActivity中获取切换bundle中信息。
setContentView(R.layout.resultlayout);//获取到上一个页面传过来的Intentintent=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;@Overrideprotected 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;}}@Overridepublic 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(){@Overridepublic 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传入下一个Activityintent.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;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.resultlayout);//获取到上一个页面传过来的Intentintent=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(){@Overridepublic void onClick(View arg0){//将intent传会上一个ActivityResultActivity.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="体重计算" /><TextViewandroid: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="计算你的标准体重"/><TextViewandroid: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"><RadioButtonandroid:id="@+id/radio_man"android:text="男"/><RadioButtonandroid:id="@+id/radio_woman"android:text="女"/></RadioGroup><TextViewandroid:id="@+id/text_height"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp"android:layout_below="@+id/RadioGroup01"android:text="身高:"/><EditTextandroid: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><TextViewandroid: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>
更多相关文章
- android minui fb显示相关函数
- android 获取控件大小
- Android(安卓)EditText默认不弹出输入法,以及获取光标,修改输入法E
- Bitmap,使用Matrix对图像几何变换
- Android(安卓)如何获取SDCard 内存(二)
- cocos2d-x在android中响应返回键编译报错的bug分析
- Android(安卓)利用ViewPager、Fragment、PagerTabStrip实现多页
- 热修复
- Android(安卓)应用跳转到指定QQ临时聊天界面