通过Bundle 两个屏幕间传送/接收数据

    技术2026-03-28  7

    传送数据到新意图(Intent)

    Intent可以分为两种类型,“默认的”与“自定义的”。

    我们可以使用IntentFilter过滤和寻找对应的Intent.

     

    Activity分为两种类型:独立的,相依赖的。

    相依赖的Activity是需要与其它Activity交换数据的一种Activity.

    相依赖的Activity又分为单向和双向。

     

    传送方:

    package com.demo.android.bmi; import java.net.URISyntaxException; import java.text.DecimalFormat; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.view.Menu; import android.view.MenuItem; import android.view.View.OnClickListener; import android.view.View; public class bmi extends Activity {     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                 findViews();         setListeners();          } private Button button_calc; private EditText field_height; private EditText field_weight; private void findViews() {     button_calc=(Button)findViewById(R.id.submit);     field_height=(EditText)findViewById(R.id.height);     field_weight=(EditText)findViewById(R.id.weight);     } private void setListeners() {     button_calc.setOnClickListener(calcBMI); } private OnClickListener calcBMI=new OnClickListener() {     public void onClick(View v)     {                 Intent intent=new Intent();         intent.setClass(bmi.this, Report.class);             Bundle bundle = new Bundle();//传送信息         bundle.putString("KEY_HEIGHT", field_height.getText().toString());         bundle.putString("KEY_WEIGHT", field_weight.getText().toString());         intent.putExtras(bundle);         startActivity(intent);             } }; }

    接收方:

    package com.demo.android.bmi; import java.text.DecimalFormat; import com.demo.android.bmi.R; import android.view.View; import android.view.View.OnClickListener; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class Report extends Activity {        @Override         public void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.report);                        findViews();            showResults();            setListeners();              }              private TextView view_result;        private TextView view_suggest;        private Button button_back;        private void findViews()        {            button_back=(Button)findViewById(R.id.back);                        view_result =(TextView)findViewById(R.id.result);             view_suggest =(TextView)findViewById(R.id.suggest);        }        private void setListeners()        {            button_back.setOnClickListener(button_back_click);        }        private OnClickListener button_back_click=new OnClickListener()        {            public void onClick(View v)            {                Report.this.finish();                           }        };        private void showResults()        {            DecimalFormat nf=new DecimalFormat("0.00");                try{                 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_average);                //openOptionsDialog();             }             catch(Exception obj)             {                 Toast.makeText(Report.this, R.string.input_error, Toast.LENGTH_SHORT).show();             }        } }

    最新回复(0)