2012-03-06 45 views
0

除了主要活动外,我还有两项子活动。缺少活动调用

调用顺序是这样的。

Main - > Sub_Activity1,然后Sub_Activity1返回到主活动。 Main ---> Sub_Activity2,则Sub_Activity2返回到主活动。

但它没有发生。据我所知,只有第二个子活动被调用,它跳过第一个。但是当我禁用/注释掉其中一个子活动时,另一个工作正常。但是当我想要一个接一个地打电话时,它只打电话给第二个。我哪里错了。这里是我的代码

主要活动:

公共无效的onCreate(捆绑savedInstanceState) {

super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    btn = (Button) findViewById(R.id.btn1); 
    txt = (TextView) findViewById(R.id.textview1); 
    txt.setText("hello world"); 
    in1= new Intent(TestActivity.this,Number.class); 
    //startActivity(in1); 
    startActivityForResult(in1, MY_DATA_CHECKCODE); 


    in2= new Intent(TestActivity.this,Message.class); 
    //startActivity(in1); 
    startActivityForResult(in2, MY_DATA_CHECKCODE1); 

} 


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


     num= data.getStringExtra("number"); 
     if(num!=null) 
     txt.setText(num); 

    } 

    else if (requestCode == MY_DATA_CHECKCODE1) { 


     num= data.getStringExtra("number"); 
     if(num!=null) 
     txt.setText(num); 

    } 

} 

subactivity1和subactivity2码是相同的,其用于一些字符串数据添加到一个新的意图,其可以在主要意图中检索。

     number = et.getText().toString().trim(); 

      in= new Intent(); 

      //in.putExtras(b); 
      in.putExtra("number", number); 
      setResult(Activity.RESULT_OK,in); 

我改变了变量以使用不同的请求代码。他们是MY_DATA_CHECKCODE和MY_DATA_CHECKCODE1.is在处理onActivitResult函数中的返回值时有任何错误。请给我建议来解决这个问题。我GOOGLE了,但找不到适当的解决方案。

+0

的方式,HTTP://developerlife.com/tutorials/ P = 302我已经知道该活动调用是aynchronous?那么如何使同步成为可能,有谁知道答案? – siva 2012-03-06 19:42:35

+0

假设如果我想调用subactivity1然后取得结果,那么必须在主要活动中对它进行一些操作,然后将该值传递给subactivity2,你将如何执行? – siva 2012-03-06 19:48:00

回答

2

Android文档不会说如果您调用startActivityForResult两次会发生什么情况。 我想你应该把第一个活动onActivityResult的第二个活动。

至少这是我会做从这里

+0

你的意思是我需要把调用放在第二个活动的if(requestCode == MY_DATA_CHECKCODE){...} bloack? – siva 2012-03-06 17:52:00

+0

那么使用请求代码的目的是什么?我认为它用于区分从主要活动中调用哪些活动?即使我使用你的方法,第一个活动被调用,然后第二个活动被一次又一次地调用。我认为问题是与onActivityResult函数。 – siva 2012-03-06 18:04:51

+0

请求代码的用途是,不同时刻的同一活动可以启动不同的活动,然后它可以处理来自相同方法的结果。我有时候做过。我不明白为什么你的第二个活动被称为几次。只有当第一次活动返回时才会调用它。 – kingston 2012-03-06 19:27:51