从J2EE转向Android的第二天

本文探讨了Android应用中不同Activity间的数据传递方法,并详细解释了如何从一个Activity获取数据并将其传递到另一个Activity,同时介绍了如何在Activity间进行数据的双向交互。包括数据的包装与传递、获取数据后的处理及展示,以及返回数据到前一Activity的过程。通过实例展示了通过Intent和Bundle实现数据的高效共享与交互,以及如何在用户操作后更新UI元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1、不同Activity之间的数据传递:

  MainActivity中:

         EditText et_shengao=(EditText)findViewById(R.id.et_shengao);
         RadioButton rb_gender_male=(RadioButton)findViewById(R.id.rb_gender_male);
         Double shengao=Double.parseDouble(et_shengao.getText().toString().trim());
         String gender="";
         if(rb_gender_male.isChecked()){
          gender="M";
         }else{
          gender="F";
         }
         //创建Intent
         Intent intent=new Intent();
         intent.setClass(MainActivity.this,MyActivity.class);
         //创建Bundle对象,并绑定数据
         Bundle bundle=new Bundle();
         bundle.putDouble("shengao",shengao);
         bundle.putString("gender",gender);
         //将Bundle对象分配给Intent对象
         intent.putExtras(bundle);
         startActivity(intent);

 

 

 

  MyActivity中:

     //获取Intent中的bundle对象
  Bundle bundle=this.getIntent().getExtras();
  //取得bundle中的数据
  String gender=bundle.getString("gender");
  Double shengao=bundle.getDouble("shengao");
  if("M".equals(gender)){
   gender="男";
  }else{
   gender="女";
  }
  TextView tvResult=(TextView)this.findViewById(R.id.tv_result);
  tvResult.setText("你是"+gender+"性"+",身高为"+shengao+" cm");

 

 

2、返回数据到前一Activity

   MainActivity中将startActivity(intent),改为startActivityForResult(intent,0);

        并重写方法:

                 @Override
             protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                   super.onActivityResult(requestCode, resultCode, data);
                   switch(resultCode){
                         case RESULT_OK:
                              Bundle bundle=data.getExtras();
                              String gender=bundle.getString("gender");
                              et_shengao.setText(String.valueOf(bundle.getDouble("shengao")));
                              if("M".equals(gender)){
                                      rb_gender_male.setChecked(true);
                              }else{
                                      rb_gender_female.setChecked(true);
                              }
                             break;
                      default:
                            break;
                  }
            }

 

 

    MyActivity中Button事件中加入:

        //返回Result到上一个Activity
        MyActivity.this.setResult(RESULT_OK,intent);
        //结束这个Activity
        MyActivity.this.finish();

 

       以下为弹出一个对话框当点击确定后再继续执行返回前一Activity:

             Button btnBack=(Button)this.findViewById(R.id.btn_back);
             btnBack.setOnClickListener(new Button.OnClickListener(){
                public void onClick(View v){
                     new AlertDialog.Builder(MyActivity.this).
                         setTitle(R.string.alertTitle).
                         setMessage(R.string.alertMsg).
                         setPositiveButton(R.string.alert_opt, new DialogInterface.OnClickListener() {
                                 public void onClick(DialogInterface dialog, int which) {
                                       //返回Result到上一个Activity
                                       MyActivity.this.setResult(RESULT_OK,intent);
                                       //结束这个Activity
                                       MyActivity.this.finish();
                                 }
                        }).show();
                  }
             });

   

 

      今天就到这儿吧,明天周末可以睡懒觉了,哈哈!皆さんお休みなさい

    

     

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值