package com.lean56.andplug.activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.Menu; import android.view.MenuItem; import com.lean56.andplug.R; /** * Single Fragment Activity * activity with only one fragment * * @author Charles */ public abstract class SingleFragmentActivity extends BaseActivity { private boolean menuCreated; /** * content fragment */ private Fragment mFragment; @Override protected int getContentView() { return R.layout.single_fragment; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // replace content with fragment FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); mFragment = getContentFragment(); fragmentTransaction.replace(R.id.fragment, mFragment); fragmentTransaction.commit(); } /** * get the content fragment * @return the content single fragment */ protected abstract Fragment getContentFragment(); // [+] option menu @Override public boolean onOptionsItemSelected(final MenuItem item) { if (mFragment != null) return mFragment.onOptionsItemSelected(item); return super.onOptionsItemSelected(item); } @Override public void invalidateOptionsMenu() { if (menuCreated) super.invalidateOptionsMenu(); } @Override public boolean onCreateOptionsMenu(Menu menu) { if (mFragment != null) mFragment.onCreateOptionsMenu(menu, getMenuInflater()); boolean created = super.onCreateOptionsMenu(menu); menuCreated = true; return created; } @Override public boolean onPrepareOptionsMenu(Menu menu) { if (mFragment != null) mFragment.onPrepareOptionsMenu(menu); return super.onPrepareOptionsMenu(menu); } // [-] option menu }