1. 程式人生 > >Android之Activity間的資料傳遞

Android之Activity間的資料傳遞

主佈局

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text1"
        android:textSize="20sp"
        android:layout_x="50px"
        android:layout_y="72px"
        android:text="性別"/>
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="男的"
        android:id="@+id/sex1"
        android:layout_x="175px"
        android:layout_y="72px"/>
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="女的"
        android:id="@+id/sex2"
        android:layout_x="400px"
        android:layout_y="72px"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text2"
        android:textSize="20sp"
        android:layout_x="50px"
        android:layout_y="200px"
        android:text="身高:"/>
    <EditText
        android:layout_width="200px"
        android:layout_height="wrap_content"
        android:id="@+id/height"
        android:layout_x="300px"
        android:layout_y="200px"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button1"
        android:layout_x="300px"
        android:layout_y="500px"
        android:text="計算"/>
</AbsoluteLayout>

MainActivity

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b1=(Button)findViewById(R.id.button1);
        b1.setOnClickListener(new Button.OnClickListener()
        {
            public void onClick(View v)
            {
                //取得輸入 的身高
                EditText et=(EditText)findViewById(R.id.height);
                double height=Double.parseDouble(et.getText().toString());
                //取得選擇的性別
                String sex="";
                RadioButton rb1=(RadioButton)findViewById(R.id.sex1);
                if(rb1.isChecked())
                {
                    sex="M";
                }
                else
                {
                    sex="F";
                }
                Intent intent1=new Intent();
                intent1.setClass(MainActivity.this,ResultActivity.class);
                Bundle bundle=new Bundle();
                bundle.putDouble("height",height);
                bundle.putString("sex",sex);
                intent1.putExtras(bundle);
                startActivity(intent1);
            }

        });
    }
}

1.Double.parseDouble()把數字型別的字串轉換成數字,所以et.getText().toString()自然是字串 2.isChecked()用於複選框,檢視是否被選中 3.bundle.putDouble(“height”,height); bundle.putString(“sex”,sex); 將要傳遞的資料打包放進bundle資料型別 4.putExtras()用於資料傳遞,且專門和Bundle配套使用,所以括號內必然是bundle型別 Result.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text1"
        android:textSize="20sp"
        android:layout_x="50px"
        android:layout_y="72px"
        />
</AbsoluteLayout>

ResultActivity

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import java.text.DecimalFormat;
import java.text.NumberFormat;

public class ResultActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        Bundle bundle=this.getIntent().getExtras();
        String sex=bundle.getString("sex");
        double height=bundle.getDouble("height");
        String setText="";
        if(sex.equals("M"))
        {
            setText="男性";
        }
        else
        {
            setText="女性";
        }
        String weight=this.getWeight(sex,height);
        TextView tv1=(TextView)findViewById(R.id.text1);
        tv1.setText("你是一位"+setText+"\n你的身高是"+height+"釐米\n你的標準體重是"+weight+"公斤");
    }
    private String format(double num)
    {
        NumberFormat formatter=new DecimalFormat("0.00");
        String s=formatter.format(num);
        return s;
    }
    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;
    }

}

1.Bundle bundle=this.getIntent().getExtras()得到Intent傳過來的Bundle,並且用Bundle接收 2.String sex=bundle.getString(“sex”); double height=bundle.getDouble(“height”); 取出bundle中打包的資料 3.NumberFormat資料格式化 4.DecimalFormat(“0.00”)輸出兩位小數