Mudar Tab com ação de um Click

Olá pessoal, eu procurei por aqui e pelo google, mas não achei nada que eu pudesse implementar.
Eu estou usando o ABS com fragments, fiz a implementação default do projeto demo e está funcionando perfeitamente, mas como faço para trocar de Tab através de um click ?
Segue a minha classe Home que tem a criação das Tabs e PageView

package br.com.android.meusgastos;

import java.util.ArrayList;

import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;
import android.widget.TabWidget;
import br.com.android.meusgastos.fragments.EventosFragment;
import br.com.android.meusgastos.fragments.GraficoFragment;
import br.com.android.meusgastos.fragments.RelatorioFragment;
import br.com.android.meusgastos.graph.LineGraph;
import br.com.android.meusgastos.util.SampleList;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockActivity;
import br.com.android.meusgastos.util.*;


public class Home extends SherlockFragmentActivity {

	    TabHost mTabHost;
	    ViewPager  mViewPager;
	    TabsAdapter mTabsAdapter;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
    	setTheme(SampleList.THEME);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       
   	
        
        mTabHost = (TabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup();
        
        mViewPager = (ViewPager)findViewById(R.id.pager);
        
        mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager);
        
        mTabsAdapter.addTab(mTabHost.newTabSpec("home").setIndicator("Home",getResources().getDrawable(R.drawable.home)),
                FragmentStackSupport.CountingFragment.class, null);
        
        mTabsAdapter.addTab(mTabHost.newTabSpec("categorias").setIndicator("Categorias",getResources().getDrawable(R.drawable.categoria)),
                FragmentStackSupport.CountingFragment.class, null);
        
        
        mTabsAdapter.addTab(mTabHost.newTabSpec("eventos").setIndicator("Eventos",getResources().getDrawable(R.drawable.evento)),
                EventosFragment.class, null);
        
        
        mTabsAdapter.addTab(mTabHost.newTabSpec("relatórios").setIndicator("Relatórios",getResources().getDrawable(R.drawable.relatorio)),
                RelatorioFragment.class, null);
        
 
        mTabsAdapter.addTab(mTabHost.newTabSpec("graficos").setIndicator("Gráfico",getResources().getDrawable(R.drawable.grafico)),
                GraficoFragment.class, null);
        
        
       

	}
	/*
	 public void lineGraphHandler (View view)
	    {
	    	LineGraph line = new LineGraph();
	    	Intent lineIntent = line.getIntent(this);
	        startActivity(lineIntent);
	    }
	
	*/
	
	
	
	
	@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("tab", mTabHost.getCurrentTabTag());
    }
	
	
	public static class TabsAdapter extends FragmentPagerAdapter
    implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener {
private final Context mContext;
private final TabHost mTabHost;
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

static final class TabInfo {
    private final String tag;
    private final Class<?> clss;
    private final Bundle args;

    TabInfo(String _tag, Class<?> _class, Bundle _args) {
        tag = _tag;
        clss = _class;
        args = _args;
    }
}

static class DummyTabFactory implements TabHost.TabContentFactory {
    private final Context mContext;

    public DummyTabFactory(Context context) {
        mContext = context;
    }

    public View createTabContent(String tag) {
        View v = new View(mContext);
        v.setMinimumWidth(0);
        v.setMinimumHeight(0);
        return v;
    }
}

public TabsAdapter(FragmentActivity activity, TabHost tabHost, ViewPager pager) {
    super(activity.getSupportFragmentManager());
    mContext = activity;
    mTabHost = tabHost;
    mViewPager = pager;
    mTabHost.setOnTabChangedListener(this);
    mViewPager.setAdapter(this);
    mViewPager.setOnPageChangeListener(this);
}



public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) {
    tabSpec.setContent(new DummyTabFactory(mContext));
    String tag = tabSpec.getTag();

    TabInfo info = new TabInfo(tag, clss, args);
    mTabs.add(info);
    mTabHost.addTab(tabSpec);
    notifyDataSetChanged();
}

@Override
public int getCount() {
    return mTabs.size();
}

@Override
public Fragment getItem(int position) {
    TabInfo info = mTabs.get(position);
    return Fragment.instantiate(mContext, info.clss.getName(), info.args);
}


public void onTabChanged(String tabId) {
    int position = mTabHost.getCurrentTab();
    mViewPager.setCurrentItem(position);
}



public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}


public void onPageSelected(int position) {
    // Unfortunately when TabHost changes the current tab, it kindly
    // also takes care of putting focus on it when not in touch mode.
    // The jerk.
    // This hack tries to prevent this from pulling focus out of our
    // ViewPager.
    TabWidget widget = mTabHost.getTabWidget();
    int oldFocusability = widget.getDescendantFocusability();
    widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
    mTabHost.setCurrentTab(position);
    widget.setDescendantFocusability(oldFocusability);
}

public void onPageScrollStateChanged(int state) {
}
}
	
	
}

Quando o usuário estiver na Aba RelatorioFragment, ele chama o GráficoFragment que está em outra Tab

package br.com.android.meusgastos.fragments;

import java.util.ArrayList;
import java.util.List;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import android.annotation.SuppressLint;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import br.com.android.meusgastos.R;
import br.com.android.meusgastos.Home.TabsAdapter;
import br.com.android.meusgastos.adapter.RelatorioAdapter;
import br.com.android.meusgastos.model.Categoria;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;



public class RelatorioFragment extends SherlockFragment implements OnItemClickListener  {
	
	
	private ListView listView;
	private List<Categoria> categorias =  new ArrayList<Categoria>();
	private Button bt_vergrafico;
	
	private TextView tv_fluxo;
	
	TabsAdapter mTabsAdapter;
	TabHost mTabHost;
	
	
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		
		
		View v = inflater.inflate(R.layout.lista_relatorios, container, false);
		
		bt_vergrafico = (Button) v.findViewById(R.id.bt_vergrafico);
		
		
		bt_vergrafico.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				Toast.makeText(getActivity(), "Click no botão", Toast.LENGTH_SHORT).show();
				
				int currentTab = mTabHost.getCurrentTab();
				
				//mTabHost.setCurrentTab(currentTab + 1); não funcionou dessa maneira, deu um nullpoint
				
				
				
			}
		});
		
		
		
		listView = (ListView) v.findViewById(R.id.listview);
		listView.setOnItemClickListener(this);
		
		
		Categoria c1 = new Categoria("Item 1", "campo1", "campo2", "campo3");
		Categoria c2 = new Categoria("Item 2", "campo1", "campo2", "campo3");
		
		categorias.add(c1);
		categorias.add(c2);
		
		
tv_fluxo = (TextView) v.findViewById(R.id.tv_fluxo);
		
		tv_fluxo.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Toast.makeText(getActivity(), "Click", Toast.LENGTH_SHORT).show();
			}
		});
		
		
		
        listView.setAdapter(new RelatorioAdapter(getActivity(),categorias)); 
        registerForContextMenu(listView);
        
			
		
		return v;
		
	}

	@Override
	public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
		// TODO Auto-generated method stub
		
		Toast.makeText(getActivity(), "Click", Toast.LENGTH_SHORT).show();
				
		view.setBackgroundColor(Color.GRAY);//pinta o item selecionado
	}

	
	
	
	@Override
     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
         super.onCreateContextMenu(menu, v, menuInfo);
         menu.setHeaderTitle("Edição");
         menu.add(Menu.NONE, 1, Menu.NONE, "Editar");
         menu.add(Menu.NONE, 2, Menu.NONE, "Apagar");
     }

	
    @Override
    public boolean onContextItemSelected(android.view.MenuItem item) {
    	// TODO Auto-generated method stub
    
    	 switch (item.getItemId()) {
         case 1:
             Log.i("ContextMenu", "Item 1a was chosen");
             Toast.makeText(getActivity(), "Click item 1", Toast.LENGTH_SHORT).show();
             return true;
         case 2:
             Log.i("ContextMenu", "Item 1b was chosen");
             Toast.makeText(getActivity(), "Click item 2", Toast.LENGTH_SHORT).show();
             return true;
    	 }
    	return super.onContextItemSelected(item);
    }
	
	
	
	
}