how to use startActivityForResult() in ActivityGroup?
I use a TabActivity with some tabs,each tab contain a ActvityGroup,each ActivityGroup manage more than one Activity.one of ActivtyGroups have three Activies:A,B and C.

At first A is created,when user click a button in A,it jump to B.

in B there are some important data which can be edited in C,when click a "edit"button in B,it jump to C.

if some data is edited in C,when i click back button,i want modify the same data in B.
what drive me crazy is when i use "finish()" in class C,my app exit directly.

I had searched many solutions on the net,bu none of them fit for my case,I don't know where is wrong,please help me or give me a example of how to use startActivityForResult() in ActivityGroup

here is my group:

    public class MyGroup extends ActivityGroup 
    {

	private int ID=0;
	private AlertDialog dialog;
	private Stack<View>history;                
	private LocalActivityManager manager;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        
        history = new Stack<View>();
        manager = getLocalActivityManager();
        
        Intent intent = new Intent(this,A.class);
        startActivity(intent);
    }
    
    @Override
    public void startActivity(Intent intent) 
    {
        View view = manager.startActivity(""+ID++,intent).getDecorView();
        history.push(view);
        setContentView(view);
    }
    
    @Override
    public void startActivityForResult(Intent intent,int requestCode)
    {
        // super.startActivityForResult(intent, requestCode);
        View view = manager.startActivity(""+ID++,intent).getDecorView();
        history.push(view);
        setContentView(view);
    }

    /*
     * if user edited data in C.class.
     * when C.class finished,refresh data in the B.class
     */
    @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data)
    {
    	Log.e("MyGroup","running");
     	super.onActivityResult(requestCode, resultCode, data);
    	if(resultCode==RESULT_OK)
    	{
        	   //modify data in B.java
            B subActivity=(B)(manager.getCurrentActivity());
            subActivity.handleActivityResult(requestCode, resultCode, data);
    	}
    }
    
    /*
     * when press back button, manage which page to show next
     * if there is one page in stack,that means when press back button it will
     * exit the app,so we add a dialog to notify user whether exit app or not
     */
    @Override
    public void onBackPressed()
    {
    	int size=history.size();
        if ( history.size()>= 2) 
        {
            history.remove(size-1);
            setContentView(history.get(size-2));
        }
        else
        {
        	if(dialog==null)
        	{
        		createDialog();
        	}
        	dialog.show();
        } 	
    }  
    }  

in B.class:

         public void nextPage()
         {
	      Intent intent=new Intent(B.this,C.class);
	      intent.putExtra("name", productAdapter.getName(position));
	      intent.putExtra("id", productAdapter.getID(position));	
	      B.this.getParent().startActivityForResult(intent,11);
         }

        /*
         * modify data in modifyItem
         */
          public void handleActivityResult(int requestCode,int resultCode,Intent data)
         {
	      String price=data.getExtras().getString("price");
	      String name=data.getExtras().getString("name");
	      String quantity=data.getExtras().getString("quantity");
	      productAdapter.setName(name, modifyItem);
	      productAdapter.setPrice(price, modifyItem);
	      productAdapter.setQuantity(quantity, modifyItem);
	      productAdapter.notifyDataSetChanged();
       }

in C.class:

    @Override
    public void onBackPressed() 
    {
    	if(price!=null)
    	{
			Bundle bundle=new Bundle();
			bundle.putString("name",name);
			bundle.putString("price",price);
			bundle.putString("quantity",quantity);
			
			this.getParent().setResult(RESULT_OK,new Intent().putExtras(bundle));
			this.finish();
			Log.e("C","inner");
    	}
    	Log.e("C","outer");
		this.getParent().onBackPressed();
    }
how to use startActivityForResult() in ActivityGroup?
===

I use a TabActivity with some tabs,each tab contain a ActvityGroup,each ActivityGroup manage more than one Activity.one of ActivtyGroups have three Activies:A,B and C.

At first A is created,when user click a button in A,it jump to B.

in B there are some important data which can be edited in C,when click a "edit"button in B,it jump to C.

if some data is edited in C,when i click back button,i want modify the same data in B.
what drive me crazy is when i use "finish()" in class C,my app exit directly.

I had searched many solutions on the net,bu none of them fit for my case,I don't know where is wrong,please help me or give me a example of how to use startActivityForResult() in ActivityGroup

here is my group:

    public class MyGroup extends ActivityGroup 
    {

	private int ID=0;
	private AlertDialog dialog;
	private Stack<View>history;                
	private LocalActivityManager manager;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        
        history = new Stack<View>();
        manager = getLocalActivityManager();
        
        Intent intent = new Intent(this,A.class);
        startActivity(intent);
    }
    
    @Override
    public void startActivity(Intent intent) 
    {
        View view = manager.startActivity(""+ID++,intent).getDecorView();
        history.push(view);
        setContentView(view);
    }
    
    @Override
    public void startActivityForResult(Intent intent,int requestCode)
    {
        // super.startActivityForResult(intent, requestCode);
        View view = manager.startActivity(""+ID++,intent).getDecorView();
        history.push(view);
        setContentView(view);
    }

    /*
     * if user edited data in C.class.
     * when C.class finished,refresh data in the B.class
     */
    @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data)
    {
    	Log.e("MyGroup","running");
     	super.onActivityResult(requestCode, resultCode, data);
    	if(resultCode==RESULT_OK)
    	{
        	   //modify data in B.java
            B subActivity=(B)(manager.getCurrentActivity());
            subActivity.handleActivityResult(requestCode, resultCode, data);
    	}
    }
    
    /*
     * when press back button, manage which page to show next
     * if there is one page in stack,that means when press back button it will
     * exit the app,so we add a dialog to notify user whether exit app or not
     */
    @Override
    public void onBackPressed()
    {
    	int size=history.size();
        if ( history.size()>= 2) 
        {
            history.remove(size-1);
            setContentView(history.get(size-2));
        }
        else
        {
        	if(dialog==null)
        	{
        		createDialog();
        	}
        	dialog.show();
        } 	
    }  
    }  

in B.class:

         public void nextPage()
         {
	      Intent intent=new Intent(B.this,C.class);
	      intent.putExtra("name", productAdapter.getName(position));
	      intent.putExtra("id", productAdapter.getID(position));	
	      B.this.getParent().startActivityForResult(intent,11);
         }

        /*
         * modify data in modifyItem
         */
          public void handleActivityResult(int requestCode,int resultCode,Intent data)
         {
	      String price=data.getExtras().getString("price");
	      String name=data.getExtras().getString("name");
	      String quantity=data.getExtras().getString("quantity");
	      productAdapter.setName(name, modifyItem);
	      productAdapter.setPrice(price, modifyItem);
	      productAdapter.setQuantity(quantity, modifyItem);
	      productAdapter.notifyDataSetChanged();
       }

in C.class:

    @Override
    public void onBackPressed() 
    {
    	if(price!=null)
    	{
			Bundle bundle=new Bundle();
			bundle.putString("name",name);
			bundle.putString("price",price);
			bundle.putString("quantity",quantity);
			
			this.getParent().setResult(RESULT_OK,new Intent().putExtras(bundle));
			this.finish();
			Log.e("C","inner");
    	}
    	Log.e("C","outer");
		this.getParent().onBackPressed();
    }