我的android 第29天 - Activity(二)

我的android 第29天 - Activity(二)

 

 

四、请求码的作用

使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入一个请求码(第二个参数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的业务处理,这时可以这样做:

 @Override public void onCreate(Bundle savedInstanceState) {

        ....

        button1.setOnClickListener(new View.OnClickListener(){

    public void onClick(View v) {

     startActivityForResult(new Intent(MainActivity.thisNewActivity.class),1);

     }});

        button2.setOnClickListener(new View.OnClickListener(){

    public void onClick(View v) {

     startActivityForResult(new Intent(MainActivity.thisNewActivity.class),2);

     }});

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

               switch(requestCode){

                   case 1:

                       //来自按钮1的请求,作相应业务处理

                   case2:

                  //来自按钮2的请求,作相应业务处理

                }          }}

 

五、结果码的作用

在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做(ResultActivityNewActivity为要打开的新Activity):

publicclass ResultActivity extends Activity {

       .....

       ResultActivity.this.setResult(1,intent);

       ResultActivity.this.finish();

}

publicclass NewActivity extends Activity {

       ......

        NewActivity.this.setResult(2,intent);

        NewActivity.this.finish();

}

publicclass MainActivity extends Activity { // 在该Activity会打开ResultActivityNewActivity

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

               switch(resultCode){

                   case 1:

                       // ResultActivity的返回数据

                   case 2:

                 // NewActivity的返回数据

                }          }  }

下载视频代码

 

猜你喜欢

转载自htmlunit26.iteye.com/blog/1991680