效果如下:
过程:
输入体重,点击“计算”,跳转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;
@Override
protected 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() { //按钮点击事件
@Override
public 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
*/
@Override
protected 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();
}
}
}
@Override
public 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;
@Override
protected 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() {
@Override
public 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); //chu
SecondActivity.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。