学习Android之第二个小程序(startActivityForResult与onActivityResult)

来源:互联网 发布:java获取每个月第一天 编辑:程序博客网 时间:2024/06/07 10:26

效果如下:


             

过程:

输入体重,点击“计算”,跳转Activity,显示结果,点击返回,内容仍在。


FristActivity.java

package cn.edu.bzu.activity;import com.example.work.R;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.RadioButton;public class FristActivity extends Activity {RadioButton radioButton1,radioButton2;EditText shengao;Button button;String hight;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.frist_activity);radioButton1 = (RadioButton)findViewById(R.id.RB01);radioButton2= (RadioButton)findViewById(R.id.RB02);shengao = (EditText) findViewById(R.id.shengao);button = (Button) findViewById(R.id.But1);button.setOnClickListener(new OnClickListener() {   //按钮点击事件@Overridepublic void onClick(View v) {Double double1=0.0,double2=0.0;Intent intent = new Intent();Bundle bundle = new Bundle();/** * 获取字符串,并转换类型 */hight = shengao.getText().toString();double1 =Double.parseDouble(hight);/** * 判断性别 */if(radioButton1.isChecked()){double2 =(double1-80)*0.7;bundle.putString("SEX", "男性");}if(radioButton2.isChecked()){double2 =(double1-70)*0.6;bundle.putString("SEX", "女性");}/** * 捆绑并跳转 */bundle.putDouble("H", double1);bundle.putDouble("T", double2);intent.putExtras(bundle);intent.setClass(FristActivity.this, SecondActivity.class);startActivityForResult(intent,0);/** * 置为空,看看是否onActivityResult起作用 */shengao.setText("");  }});}/** * 重写onActivityResult */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(RESULT_OK == resultCode ){double h = data.getExtras().getDouble("H");String sex = data.getExtras().getString("SEX");shengao.setText(h+"");/** * 如果选中为男性,什么都不做;如果为女性,则选中radioButton2 */if(sex.trim().equals("男性")){}else{radioButton2.toggle();}}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

frist_activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".FristActivity" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="20dp"        android:text="@string/tishi"        android:textSize="25sp" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="110dp"        android:text="性别:"        android:textSize="25sp" />    <RadioGroup        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="70dp"        android:layout_marginTop="100dp"        android:orientation="horizontal" >        <RadioButton            android:id="@+id/RB01"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:checked="true"            android:text="@string/boy"            android:textSize="40sp" />        <RadioButton            android:id="@+id/RB02"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/girl"            android:textSize="40sp" />    </RadioGroup>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="200dp"        android:text="身高:"        android:textSize="25sp" />    <EditText         android:id="@+id/shengao"         android:layout_width="200dp"        android:layout_height="wrap_content"        android:layout_marginTop="200dp"        android:layout_marginLeft="70dp"        android:textSize="25sp"        />    <Button        android:id="@+id/But1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="100dp"        android:layout_marginTop="250dp"        android:text="计算" /></RelativeLayout>

SecondActivity.java

package cn.edu.bzu.activity;import com.example.work.R;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 SecondActivity extends Activity{TextView textView;double Weight,hight;String sex;Button but2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.second_activity);but2 = (Button)findViewById(R.id.but2);textView = (TextView)findViewById(R.id.AC2_TV1);/** * 接受数据 */Bundle getFirst = this.getIntent().getExtras();sex =getFirst.getString("SEX");Weight= getFirst.getDouble("T");hight= getFirst.getDouble("H");textView.setText("你是一位"+sex+"\n你的身高是"+hight+"\n你的标准体重是"+Weight+"公斤");but2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent= new Intent();Bundle back = new Bundle();intent.setClass(SecondActivity.this, FristActivity.class);back.putString("SEX", sex);back.putDouble("H", hight);intent.putExtras(back);setResult(RESULT_OK, intent);  //chuSecondActivity.this.finish();}});}}

startActivityForResult(Intent intent, int requestCode)
参数intent就不说了。参数requestCode,是一个常量,是一个标志。
setResult(int resultCode, Intent data)
参数resultCode与onActivityResult的第二个参数对应,也就是onActivityResult 里的resultCode。


大体过程:
Aactivity通过startActivityForResult跳转到Bactivity,Bactivity执行setResult和finish,传值给Aactivity,返回Aactivity,
返回Aactivity后马上自动执行onActivityResult。





0 0