onActivityResult在android中的用法

  在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这个时候就要用到回调函数onActivityResult()。

 

一.onActivityResultActivity.java

主要的Activity,一会会先执行此Activity,然后调用B Activity,并向其发送数据,通过回调函数来获取B传回来的值。

public class onActivityResultActivity extends Activity {

   @Override

   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

       StartA();

   }

   public void StartA()

   {

         Button buttonA = (Button)findViewById(R.id.button1);

         buttonA.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {

                              Intent intent = new Intent(onActivityResult.this,ClassB.class);

                                  String passString = "Hello,this is A";

                                 intent.putExtra("ToB", passString);

 

                                  int resultCode = 0;

                               //发送回调请求

                                  startActivityForResult(intent, resultCode);

                          

                    }

             });

   }

   protected void onActivityResult(int requestCode, int resultCode, Intent data) {

         switch (resultCode) { //resultCode为回传的标记,我在B中回传的是RESULT_OK

                case RESULT_OK:

         Bundle b=data.getExtras(); //data为B中回传的Intent

         String str=b.getString("FromB");//str即为回传的值

         TextView view = (TextView)findViewById(R.id.textA);

         view.setText(str);

            //也可以在这里做额外的处理,比如回调别的信息。

                 break;

                default:

                   break;

         }

         }

  

   

}

 

 二.跳转的Activity

ActivityB.java

public class ActivityB extends Activity{

      private Intent intent;

   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.second);

      

       intent = getIntent();

             String result = intent.getStringExtra("ToB");

      

      

         Button button = (Button)findViewById(R.id.button2);

       button.setOnClickListener(new View.OnClickListener() {

                   

                    @Override

                    public void onClick(View v) {

                           Intent intent = new Intent(ActivityB.this, onActivityResultActivity.class);

                           String passString = "Hello,this is B";

                           intent.putExtra("FromB", passString);

                         //回调给onActivityResultActivity

                           setResult(RESULT_OK, intent);

                           finish();

                    }

             });

      TextView textView = (TextView)findViewById(R.id.textB);

       textView.setText(result);

   }

}

 

三.关键信息

switch (resultCode) { //resultCode为回传的标记,在B中回传的是RESULT_OK

                case RESULT_OK:

         Bundle b=data.getExtras(); //data为B中回传的Intent

         String str=b.getString("FromB");//str即为回传的值

         TextView view = (TextView)findViewById(R.id.textA);

         view.setText(str);

                 break;

                default:

                   break;

         }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值