傳送資料到新的Activity去
話先說在前頭
- 另外這是一篇筆記,不是一篇教學,所以我不會寫上所有的方式,我只會寫我用的方法。
- 本篇文章是參照[深入淺出 Android -- Google 手持設備應用程式設計入門]跟著做的,所以可能會省略一些說明,詳情請參閱原本的文章。
前面我們已經學會如何在目前的Activity開啟一個新的Activity了,現在我要學怎麼傳送資料到新的Activity去。
首先我們在上一篇的7~12中間加入8~11的程式。
- private OnClickListener calcBMI = new OnClickListener()
- {
- public void onClick(View v)
- {
- //Switch to report page
- Intent intent = new Intent();
- intent.setClass(Bmi2.this, Report.class);
- Bundle bundle = new Bundle();
- bundle.putString("KEY_HEIGHT", fieldHeight.getText().toString());
- bundle.putString("KEY_WEIGHT", fieldWeight.getText().toString());
- intent.putExtras(bundle);
- startActivity(intent);
- }
- };
這邊程式很簡單,只是宣告一個 Bundle ,然後將參數塞入 Bundle,然後在將 Bundle 塞入 Intent 裡面去而已。接下來我們得在 Report 這個 Activity 裡面把剛剛塞入的參數給解出來。
- Bundle bundle = this.getIntent().getExtras();
- double height = Double.parseDouble(bundle.getString("KEY_HEIGHT"))/100;
- double weight = Double.parseDouble(bundle.getString("KEY_WEIGHT"));
這邊也很簡單,只是反向的把參數解出來;先從 getExtras() 取得 Bundle ,然後在利用識別字去取得對應的資料。其他的只是把計算的部分搬到 Report 來,並沒有什麼特別的程式。
Report 的全部程式如下:
- package com.demo.android.bmi2;
- import java.text.DecimalFormat;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.TextView;
- public class Report extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.report);
- findViews();
- showResults();
- setListensers();
- }
- private Button button_back;
- private TextView view_result;
- private TextView view_suggest;
- private OnClickListener backMain = new OnClickListener(){
- public void onClick(View v){
- Report.this.finish();
- }
- };
- private void setListensers() {
- // TODO Auto-generated method stub
- button_back.setOnClickListener(backMain);
- }
- private void showResults() {
- // TODO Auto-generated method stub
- DecimalFormat nf = new DecimalFormat("0.00");
- Bundle bundle = this.getIntent().getExtras();
- double height = Double.parseDouble(bundle.getString("KEY_HEIGHT"))/100;
- double weight = Double.parseDouble(bundle.getString("KEY_WEIGHT"));
- double bmi = weight / (height * height);
- view_result.setText("Your BMI is " + nf.format(bmi));
- if(bmi>25)
- {
- view_suggest.setText(R.string.advice_heavy);
- }
- else if(bmi<20)
- {
- view_suggest.setText(R.string.advice_light);
- }
- else
- {
- view_suggest.setText(R.string.advice_avg);
- }
- }
- private void findViews() {
- // TODO Auto-generated method stub
- button_back = (Button)findViewById(R.id.report_back);
- view_result = (TextView)findViewById(R.id.result);
- view_suggest = (TextView)findViewById(R.id.suggest);
- }
- }
沒有留言:
張貼留言