安卓学习,参数的双向传递

首先在主界面设置按钮点击事件,点击按钮后就跳转到计算活动中,此时用到了Bundle用来传递多个参数(与intent对象配合使用,是由一种活动之间传参的方法)

btnHight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,CHActivity.class);
                Bundle bundle = new Bundle();
                bundle.putString("Father" ,"180");
                bundle.putString("Mom","165");

                intent.putExtras(bundle);

                //startActivity(intent);
                startActivityForResult(intent,1);
            }
        });

在另一个活动中接收数据

 //获取前一个activity的初始数据
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        etFather.setText(bundle.getString("Father"));
        etMom.setText(bundle.getString("Mom"));

然后通过按钮点击事件,利用身高推测公式计算身高(儿子身高(厘米) =(父亲身高+母亲身高 ×1.08)÷2   女儿身高(厘米) =(父亲身高×0.923+母亲身高)÷2)

 //计算身高并返回结果按钮的点击事件
        btnResult.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取值,获取父亲身高和母亲身高
                int intFather = 0;
                int intMom = 0;
                int intBoy = 0;
                int intGirl = 0;
                intFather = Integer.parseInt(etFather.getText().toString());
                intMom = Integer.parseInt(etMom.getText().toString());

                //计算
                intBoy = (int)((intFather + intMom * 1.08) / 2);
                intGirl = (int)((intMom + intFather*0.923) / 2);

                //回显
                tvResult.setText("男孩:" + String.valueOf(intBoy) + "女孩:" + String.valueOf(intGirl));

                //Intent intent1 = new Intent();
                //intent1.putExtra("Boy" , intBoy);
                //intent1.putExtra("Girl",intGirl);
                //setResult(10,intent1);
                //finish();
            }
        });

计算结果回传到前一个活动中

  Intent intent1 = new Intent();
                intent1.putExtra("Boy" , intBoy);
                intent1.putExtra("Girl",intGirl);
                setResult(10,intent1);
                finish();

进行到这一步之后,由于用到了数据的回传,所以之前的活动跳转语句就不适用了,为了获取回传的数据,需要将startActivity(intent)改为tartActivityForResult(intent,1)

 //startActivity(intent);
                startActivityForResult(intent,1);

获取结果,并在界面显示:

 //获取结果事件
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==1)
        {
            if(resultCode==10){

                tvMsg.setText("男孩:" + String.valueOf(data.getIntExtra("Boy",0)) + " 女孩:" + String.valueOf(data.getIntExtra("Girl",0))  );

            }

        }
    }

 完整代码:

安卓学习,参数的双向传递
package com.example.hight;

import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    //初始化变量
    private TextView tvMsg = null;
    private Button btnHight = null;


    //事件


    //创建事件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnHight = (Button)findViewById(R.id.btnMainHeight);
        tvMsg = (TextView)findViewById(R.id.tvMainResult);

        btnHight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,CHActivity.class);
                Bundle bundle = new Bundle();
                bundle.putString("Father" ,"180");
                bundle.putString("Mom","165");

                intent.putExtras(bundle);

                //startActivity(intent);
                startActivityForResult(intent,1);
            }
        });

    }

    //获取结果事件
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==1)
        {
            if(resultCode==10){

                tvMsg.setText("男孩:" + String.valueOf(data.getIntExtra("Boy",0)) + " 女孩:" + String.valueOf(data.getIntExtra("Girl",0))  );

            }

        }
    }
}
MainActivity.class
安卓学习,参数的双向传递
package com.example.hight;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

@SuppressLint("Registered")
public class CHActivity extends AppCompatActivity {

    //定义变量
    private EditText etFather = null;
    private EditText etMom = null;
    private Button btnResult = null;
    private TextView tvResult = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ch);

        etFather = (EditText)findViewById(R.id.etCHFather);
        etMom = (EditText)findViewById(R.id.etChMom);
        btnResult = (Button)findViewById(R.id.btnCHCount);
        tvResult = (TextView)findViewById(R.id.tvChResult);

        //获取前一个activity的初始数据
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        etFather.setText(bundle.getString("Father"));
        etMom.setText(bundle.getString("Mom"));

        //计算身高并返回结果按钮的点击事件
        btnResult.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取值,获取父亲身高和母亲身高
                int intFather = 0;
                int intMom = 0;
                int intBoy = 0;
                int intGirl = 0;
                intFather = Integer.parseInt(etFather.getText().toString());
                intMom = Integer.parseInt(etMom.getText().toString());

                //计算
                intBoy = (int)((intFather + intMom * 1.08) / 2);
                intGirl = (int)((intMom + intFather*0.923) / 2);

                //回显
                tvResult.setText("男孩:" + String.valueOf(intBoy) + "女孩:" + String.valueOf(intGirl));

                Intent intent1 = new Intent();
                intent1.putExtra("Boy" , intBoy);
                intent1.putExtra("Girl",intGirl);
                setResult(10,intent1);
                finish();
            }
        });
    }
}
CHActivity.class
安卓学习,参数的双向传递
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <TextView
        android:id="@+id/tvMainResult"
        android:layout_width="match_parent"
        android:layout_height="43dp"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="31dp"
        android:layout_marginBottom="369dp"
        android:text="结果"
        android:textColor="@color/colorAccent" />

    <Button
        android:id="@+id/btnMainHeight"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="31dp"
        android:layout_marginLeft="31dp"
        android:layout_marginTop="318dp"
        android:text="计算"
        tools:ignore="MissingConstraints"
        tools:layout_editor_absoluteX="79dp"
        tools:layout_editor_absoluteY="313dp" />
</RelativeLayout>
activity_main.xml
安卓学习,参数的双向传递
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="vertical">


    <TextView
        android:id="@+id/tvCHFather"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/etCHFather"
        android:layout_alignParentTop="true"

        android:layout_marginStart="0dp"
        android:layout_marginTop="35dp"
        android:text="父亲身高(cm)"
        tools:layout_editor_absoluteX="48dp"
        tools:layout_editor_absoluteY="48dp" />

    <EditText
        android:id="@+id/etCHFather"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="70dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="0"
        tools:layout_editor_absoluteX="38dp"
        tools:layout_editor_absoluteY="107dp" />

    <TextView
        android:id="@+id/tvCHMom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="19dp"
        android:layout_marginLeft="19dp"
        android:layout_marginTop="129dp"
        android:text="母亲身高(cm)"
        tools:layout_editor_absoluteX="38dp"
        tools:layout_editor_absoluteY="194dp" />

    <EditText
        android:id="@+id/etChMom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/btnCHCount"
        android:layout_alignParentTop="true"
        android:layout_marginStart="-7dp"
        android:layout_marginTop="168dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="0"
        tools:layout_editor_absoluteX="38dp"
        tools:layout_editor_absoluteY="248dp" />

    <Button
        android:id="@+id/btnCHCount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="28dp"
        android:layout_marginLeft="28dp"
        android:layout_marginBottom="137dp"
        android:text="计算身高并返回结果"
        tools:layout_editor_absoluteX="53dp"
        tools:layout_editor_absoluteY="369dp" />

    <TextView
        android:id="@+id/tvChResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/btnCHCount"
        android:layout_centerVertical="true"
        android:text="计算结果" />
</RelativeLayout>
activity_ch.xml

 

安卓学习,参数的双向传递

上一篇:threejs 鼠标移动控制模型旋转


下一篇:Android 开发技术周报 Issue#274