Android中Activity跳转 startActivity和startActivityForResult之间的区别

来源:互联网 发布:淘宝查重会泄露论文吗 编辑:程序博客网 时间:2024/05/16 07:05

startActivity(intent):只是从当前活动界面跳转到另外一个界面,两个界面中不再有联系。

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>


0 0