public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo_activity_main);

    // enable ActionBar app icon to behave as action to toggle nav drawer
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);

    mDrawer.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

    _initMenu();
    mDrawerToggle = new CustomActionBarDrawerToggle(this, mDrawer);
    mDrawer.setDrawerListener(mDrawerToggle);

    // ---------------------------------------------------------------
    // ...
    String base64EncodedPublicKey = IabUtil.key;

    // compute your public key and store it in base64EncodedPublicKey
    mHelper = new IabHelper(this, base64EncodedPublicKey);
    mHelper.enableDebugLogging(true);

    mHelper.startSetup(
        new IabHelper.OnIabSetupFinishedListener() {
          public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
              // Oh noes, there was a problem.
              Log.d(TAG, "Problem setting up In-app Billing: " + result);
              return;
            }

            // Have we been disposed of in the meantime? If so, quit.
            if (mHelper == null) return;

            // Hooray, IAB is fully set up!
            IabUtil.getInstance().retrieveData(mHelper);
          }
        });

    // -----------------------------------------------------------------
    // BaseFragment baseFragment = null;
    if (savedInstanceState != null) {
      mSelectedFragment = savedInstanceState.getInt(BUNDLE_SELECTEDFRAGMENT);

      FragmentManager fragmentManager = getFragmentManager();
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
      if (fragmentManager.findFragmentById(R.id.fragment_main) == null)
        mBaseFragment = selectFragment(mSelectedFragment);
      // if (mBaseFragment==null)
      //    mBaseFragment = selectFragment(mSelectedFragment);
    } else {
      mBaseFragment = new HeaderFragment();
      openFragment(mBaseFragment);
    }

    // -----------------------------------------------------------------
  }
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

    // Pass on the activity result to the helper for handling
    if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
      // not handled, so handle it ourselves (here's where you'd
      // perform any handling of activity results not related to in-app
      // billing...
      super.onActivityResult(requestCode, resultCode, data);
    } else {
      Log.d(TAG, "onActivityResult handled by IABUtil.");
    }
  }
 @Override
 public void onDestroy() {
   super.onDestroy();
   if (mHelper != null) mHelper.dispose();
   mHelper = null;
 }