Android之Activity間的資料傳遞
阿新 • • 發佈:2018-12-11
主佈局
<?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”)輸出兩位小數