onActivityResult在android中的用法

来源:互联网 发布:ubuntu无法切换输入法 编辑:程序博客网 时间:2024/05/17 12:05

onActivityResult在android中的用法

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

现在贴上一个关于onActivityResult的用法的小例子的代码:

onActivityResult.java

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

public class onActivityResult extends Activity {

   /** Called when the activity is first created. */

   @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) {

                           // TODO Auto-generated method stub

//                     onActivityResult.this.setContentView(R.layout.second);

//                     onActivityResult.this.StartB();

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

                                  String passString = "Hello,this is A";

                                 intent.putExtra("ToB", passString);

                                  startActivityForResult(intent, 0);

                          

                    }

             });

   }

   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;

         }

         }

  

  

   /*public void StartB()

   {

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

         buttonB.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {

                           // TODO Auto-generated method stub

                       onActivityResult.this.setContentView(R.layout.main);

                       onActivityResult.this.StartA();

                    }

             });

   }*/

}

----------------------------------------------------------------------------------------------------------------------

ClassB.java

public class ClassB 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) {

                           // TODO Auto-generated method stub

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

                           String passString = "Hello,this is B";

                           intent.putExtra("FromB", passString);

                           setResult(RESULT_OK, intent);

                           finish();

                    }

             });

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

       textView.setText(result);

   }

}