Android中Activity跳转 startActivity和startActivityForResult之间的区别
2013-12-31 14:38
721 查看
startActivity(intent):只是从当前活动界面跳转到另外一个界面,两个界面中不再有联系。
startActiivityForResult(requestcode,intnet):可以经当前活动界面认为是一个父窗体,要跳转的界面为子窗体,当子窗体关闭时,父窗体会执行onActivityResult()方法,并可以获取子窗体的返回值.
详细代码:
main.xml
父Activity跳转到子Activity
详细代码:
subLayout.xml
startActiivityForResult(requestcode,intnet):可以经当前活动界面认为是一个父窗体,要跳转的界面为子窗体,当子窗体关闭时,父窗体会执行onActivityResult()方法,并可以获取子窗体的返回值.
详细代码:
package irdc.ex03_11; /* import相关class */ import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; public class EX03_11 extends Activity { private EditText et; private RadioButton rb1; private RadioButton rb2; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 加载main.xml Layout */ setContentView(R.layout.main); /* * 以findViewById()取得Button对象,并加入onClickListener */ Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { /* 取得输入的身高 */ et = (EditText) findViewById(R.id.height); double height = Double.parseDouble(et.getText().toString()); /* 取得选择的性别 */ String sex = ""; rb1 = (RadioButton) findViewById(R.id.sex1); rb2 = (RadioButton) findViewById(R.id.sex2); if (rb1.isChecked()) { sex = "M"; } else { sex = "F"; } /* new一个Intent对象,并指定class */ Intent intent = new Intent(); intent.setClass(EX03_11.this, EX03_11_1.class); /* * new一个Bundle对象,并将要传递的数据传入 */ Bundle bundle = new Bundle(); bundle.putDouble("height", height); bundle.putString("sex", sex); /* * 将Bundle对象assign给Intent */ intent.putExtras(bundle); /* * 调用Activity EX03_11_1 */ startActivityForResult(intent, 0); } }); } /* * 重写 onActivityResult() * 当SubActivity界面关闭时,执行该方法 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { case RESULT_OK: /* 取得数据,并显示于画面上 */ Bundle bunde = data.getExtras(); String sex = bunde.getString("sex"); double height = bunde.getDouble("height"); et.setText("" + height); if (sex.equals("M")) { rb1.setChecked(true); } else { rb2.setChecked(true); } break; default: break; } } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/title" android:layout_width="260dp" android:layout_height="56dp" android:layout_x="36px" android:layout_y="32px" android:text="@string/title" android:textSize="24sp" /> <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="37px" android:layout_x="18dp" android:layout_y="201dp" android:text="@string/text1" android:textSize="18sp" /> <EditText android:id="@+id/height" android:layout_width="130px" android:layout_height="wrap_content" android:layout_x="81dp" android:layout_y="188dp" android:ems="10" android:numeric="decimal" android:textSize="18sp" > <requestFocus /> </EditText> <TextView android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="29px" android:layout_x="12dp" android:layout_y="110dp" android:text="@string/text2" android:textSize="18sp" /> <TextView android:id="@+id/text3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="188dp" android:layout_y="203dp" android:text="cm" android:textSize="18sp" /> <RadioGroup android:id="@+id/sex" android:layout_width="300px" android:layout_height="100px" android:layout_x="80dp" android:layout_y="97dp" android:checkedButton="@+id/sex1" android:orientation="horizontal" > <RadioButton android:id="@+id/sex1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="男的" /> <RadioButton android:id="@+id/sex2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女的" /> </RadioGroup> <Button android:id="@+id/button1" android:layout_width="104dp" android:layout_height="wrap_content" android:layout_x="78dp" android:layout_y="264dp" android:text="計算" /> </AbsoluteLayout>
父Activity跳转到子Activity
详细代码:
package irdc.ex03_11; /* import相关class */ 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.widget.Button; import android.widget.TextView; public class EX03_11_1 extends Activity { Bundle bunde; Intent intent; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 载入mylayout.xml Layout */ setContentView(R.layout.myalyout); /* 取得Intent中的Bundle对象 */ intent = this.getIntent(); bunde = intent.getExtras(); /* 取得Bundle对象中的数据 */ String sex = bunde.getString("sex"); double height = bunde.getDouble("height"); /* 判断性别 */ String sexText = ""; if (sex.equals("M")) { sexText = "男性"; } else { sexText = "女性"; } /* 取得标准体重 */ String weight = this.getWeight(sex, height); /* 设定输出文字 */ TextView tv1 = (TextView) findViewById(R.id.text1); tv1.setText("你是一位" + sexText + "\n你的身高是" + height + "公分\n你的标准体重是" + weight + "公斤"); /* 以findViewById()取得Button对象,并加入onClickListener */ Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { /* 回传result回上一个activity */ EX03_11_1.this.setResult(RESULT_OK, intent); /* 关闭activity */ EX03_11_1.this.finish(); } }); } /* * 四舍五入的method */ private String format(double num) { NumberFormat formatter = new DecimalFormat("0.00"); String s = formatter.format(num); return s; } /* * 以findViewById()取得Button对象,并加入onClickListener */ 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; } }
subLayout.xml
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_x="50px" android:layout_y="72px" /> <Button android:id="@+id/button1" android:layout_width="131dp" android:layout_height="wrap_content" android:layout_x="71dp" android:layout_y="134dp" android:text="回上一頁"/> </AbsoluteLayout>
相关文章推荐
- Activity跳转,startActivity和startActivityForResult之间的区别
- Fragment与Activity之间的通讯(解决Android中Fragment调用startactivityforresult不能返)
- android之activity之间共享数据 startActivityForResult
- Android startActivityForResult和setResult的区别
- startActivityForResult 和startActivity的区别
- Android singleTask或singleInstance与startActivityForResult冲突解决
- Android之startActivity()和startActivityForResult()
- Android的startActivityForResult不起作用
- Android startActivityForResult()和onActivityResult()的用法
- Android开发,startActivityForResult方法
- [Android]嵌套Fragment以及startActivityForResult()
- android中使用startActivityForResult回传数据
- android的startActivityForResult学习心得
- Android startActivityForResult的使用
- [android]startActivityForResult 和 onActivityResult 问题
- Android startActivityForResult()的用法
- 关于Android中startActivityForResult()方法的详细使用
- Android startActivityForResult
- Android 开发笔记 第二季 startActivityForResult
- android中使用startactivityforresult跳转Activity后需要重写onBackPressed()方法