package com.heaven7.android; import android.app.Activity; import android.app.Service; import android.content.Intent; import android.os.Bundle; import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import com.heaven7.core.util.Toaster; import com.heaven7.core.util.ViewHelper; import butterknife.ButterKnife; public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener{ private Toaster mToaster; private ViewHelper mViewHelper; private IntentExecutor mIntentExecutor; protected abstract int getlayoutId(); protected abstract void initView(); protected abstract void initData(Bundle savedInstanceState); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mIntentExecutor = new IntentExecutor(); mToaster = new Toaster(this); mViewHelper = new ViewHelper(getWindow().getDecorView()); onPreSetContentView(); setContentView(getlayoutId()); ButterKnife.bind(this); initView(); initData(savedInstanceState); } protected void onPreSetContentView(){} @Override protected void onStop() { super.onStop(); // mHttpExecutor.cancelAll(); } protected void showToast(String msg){ mToaster.show(msg); } protected void showToast(int resID){ mToaster.show(resID); } protected Toaster getToaster(){ return mToaster; } public ViewHelper getViewHelper(){ return mViewHelper; } public IntentExecutor getIntentExecutor() { return mIntentExecutor; } //================================ protected void replaceFragment(int containerViewId, Fragment fragment) { replaceFragment(containerViewId, fragment, true); } protected void replaceFragment(int containerViewId, Fragment fragment, boolean addToback) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction().replace(containerViewId, fragment); if (addToback) { ft.addToBackStack(fragment.getClass().getName()); } ft.commit(); } protected void replaceFragmentByPreviousIfExist(int containerViewId, Fragment fragment, boolean addBack) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); String tag = fragment.getClass().getName(); Fragment previousFragment = getSupportFragmentManager().findFragmentByTag(tag); ft.replace(containerViewId, previousFragment != null ? previousFragment : fragment, tag); if (addBack) ft.addToBackStack(null); ft.commit(); } protected void setCommonBackListener(View v){ v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } @Override public void onClick(View v) { } public class IntentExecutor{ public void launchActivity(Class<? extends Activity> clazz, int intentFlags) { startActivity(new Intent(BaseActivity.this, clazz).addFlags(intentFlags)); } public void launchActivity(Class<? extends Activity> clazz) { startActivity(new Intent(BaseActivity.this, clazz)); } public void launchActivity(Class<? extends Activity> clazz, Bundle data) { launchActivity(clazz, data, 0); } public void launchActivity(Class<? extends Activity> clazz, Bundle data, int intentFlags) { startActivity(new Intent(BaseActivity.this, clazz).putExtras(data).addFlags(intentFlags)); } public void launchActivityForResult(Class<? extends Activity> clazz, int requestCode) { startActivityForResult(new Intent(BaseActivity.this, clazz), requestCode); } public void launchService(Class<? extends Service> clazz, Bundle data){ startService(new Intent(BaseActivity.this,clazz).putExtras(data)); } } }