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

效果如下:


             

过程:

输入体重,点击“计算”,跳转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。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值