项目需要使用一个Tabhost控件,要求其达到的效果是,在一个Tab页里面可以实现Activity的调转,网上有人介绍这个方法 
ActivityGroup + GridView + ViewFlipper 实现选项卡
效果达到了,但是它引发了一个问题,就是 在activity中调用子activity时捕捉不到返回值,
调用子activity的方法没有错误,代码如下
//启动新窗体
@Override
    public void onClick(View v) 
    {
        //添加新列表按钮
        if(v.getId()==R.id.btnAddMusicList)
        {
            //启动一个新的activity(Setting)
            Intent intent = new Intent();
            intent.setClass(MyMusicListActivity.this, AddNewMusicListActivity.class);
            //给新的activity(Setting)
            intent.putExtra("MusicListName", "");
            startActivityForResult(intent,1);
        }
    }
//获取返回结果,但是这段代码根本就没有执行
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if(resultCode==RESULT_OK)
        {
            String strName=data.getExtras().getString("strListName");
            if(!strName.equals(""))
            {
                myDb.insertData( strName);
                ShowMusicList();
            }
        }
    }
有人知道这是怎么回事吗,该如何解决呢 ??????????

解决方案 »

  1.   

    onActivityResult你是怎么知道没执行的?
    你加点log,给大家贴上来
      

  2.   

    我调试的加断点都不停,@Override
      public void onActivityResult(int requestCode, int resultCode, Intent data)
      {
      if(resultCode==RESULT_OK)
      {
      String strName=data.getExtras().getString("strListName");
      if(!strName.equals(""))
      {
      myDb.insertData( strName);
      ShowMusicList();
      }
      }
      }
    这段代码根本就没有执行
      

  3.   

    我估计你点返回就会执行,但是你点的应该是调用的onClick,新开了一个Activity
      

  4.   

    ActivityGroup是将Activity加入到这个ActivityGroup中了。他们里面的Activity就相当于一个view,失去了很多Activity的特性了。你的那断代码根本就不回执行的哦。你如果需要在切换的时候传值,可以换个方法。比如:在点击GridView 的时候获取当前的position在点击事件中进行相关的操作。方法还有很多。
      

  5.   

    我使用  context.sendBroadcast(intent); 发广播来通知父类了,它不返还结果感觉很奇怪。
      

  6.   


    一点都不奇怪啊,你看看你的Activitygroup代码就知道了,子activity只是加入到父类的容器中。所以onActivityResult代码不会执行的。
      

  7.   


    只要把子activity添加到了ActivityGroup中,返还结果就一定获取不到吗,无论在什么地方捕获,有没有办法
    在其他的地方可以捕获,比如在父activity中或者其他的什么地方,我试过在父的activity中捕获也不行
      

  8.   

    子activity中这样写:
    public void onClick(View v)  
      {
      //添加新列表按钮
      if(v.getId()==R.id.btnAddMusicList)
      {
      //启动一个新的activity(Setting)
      Intent intent = new Intent();
      intent.setClass(MyMusicListActivity.this, AddNewMusicListActivity.class);
      //给新的activity(Setting)
      intent.putExtra("MusicListName", "");
      getParent().startActivityForResult(intent,1);
      }
      }
    //获取返回结果,但是这段代码根本就没有执行
    @Override
      public void handleActivityResult(int requestCode, int resultCode, Intent data)
      {
      if(resultCode==RESULT_OK)
      {
      String strName=data.getExtras().getString("strListName");
      if(!strName.equals(""))
      {
      myDb.insertData( strName);
      ShowMusicList();
      }
      }
      }
    父activity中:
    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);           
                if(resultCode==RESULT_OK){
                 子activity activit =(子activity)getLocalActivityManager().getCurrentActivity();
                    activit.handleActivityResult(requestCode, resultCode, data);
                }
        }