package com.github.captain_miao.agera.tutorial.base; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; public abstract class BaseActivity extends AppCompatActivity { private static String TAG = BaseActivity.class.getSimpleName(); public abstract void init(Bundle savedInstanceState); @Override final protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(savedInstanceState); if(getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } /** * replace fragment */ protected void initFragment(int containerViewId, BaseFragment fragment, String tag) { FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(containerViewId, fragment, tag).commitAllowingStateLoss(); } /** * add fragment */ protected void addFragment(int containerViewId, BaseFragment fragment) { FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(containerViewId, fragment).commitAllowingStateLoss(); } protected <F extends BaseFragment> void addFragment(int containerViewId, Class<F> fragmentClazz) { F frg = createFragment(fragmentClazz, getIntent().getExtras()); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(containerViewId, frg).commitAllowingStateLoss(); } /** * create fragment instance * @param fragmentClazz * @param args * @param <T> * @return */ public static <T extends BaseFragment> T createFragment(Class<T> fragmentClazz, Bundle args) { T fragment = null; try { fragment = fragmentClazz.newInstance(); fragment.setArguments(args); } catch (java.lang.InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return fragment; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); } }