拥有BaseActivity
类是否合适,并且它将作为所有其他活动的超类。我需要这个有一些常见的活动实现。
BaseActivity:
public class BaseActivity extends Activity
{
//All Common implementations goes here
}
活动
public class HomeActivity extends BaseActivity
{
}
答案 0 :(得分:3)
我已经将这种类型的BaseActivity用于所有常见的方法封面。
public abstract class AbstractBaseActivity extends AppCompatActivity{
private ProgressDialog mProgressDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentView());
ButterKnife.bind(this);
onViewReady(savedInstanceState, getIntent());
}
@CallSuper
protected void onViewReady(Bundle savedInstanceState, Intent intent) {
//To be used by child activities
}
@Override
protected void onDestroy() {
ButterKnife.bind(this);
super.onDestroy();
}
protected void hideKeyboard() {
try {
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
if (getCurrentFocus() != null)
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
} catch (Exception e) {
Log.e("MultiBackStack", "Failed to add fragment to back stack", e);
}
}
public void noInternetConnectionAvailable() {
showToast(getString(R.string.noNetworkFound));
}
protected void showBackArrow() {
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
supportActionBar.setDisplayShowHomeEnabled(true);
}
}
public void showProgressDialog(String title, @NonNull String message) {
if (mProgressDialog == null) {
mProgressDialog = new ProgressDialog(this);
if (title != null)
mProgressDialog.setTitle(title);
mProgressDialog.setIcon(R.mipmap.ic_launcher);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setCancelable(false);
}
if (!mProgressDialog.isShowing()) {
mProgressDialog.setMessage(message);
mProgressDialog.show();
}
}
public void hideDialog() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
}
}
protected void showAlertDialog(String msg) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setTitle(null);
dialogBuilder.setIcon(R.mipmap.ic_launcher);
dialogBuilder.setMessage(msg);
dialogBuilder.setPositiveButton(getString(R.string.dialog_ok_btn), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
dialogBuilder.setCancelable(false);
dialogBuilder.show();
}
protected void showToast(String mToastMsg) {
Toast.makeText(this, mToastMsg, Toast.LENGTH_LONG).show();
}
protected abstract int getContentView();
}
在我的每一项活动中。
public class MainActivity extends AbstractBaseActivity
{
@Override
protected int getContentView() {
return R.layout.main_activity;//your layout
}
@Override
protected void onViewReady(Bundle savedInstanceState, Intent intent) {
super.onViewReady(savedInstanceState, intent);
//your code
//get baseclass methods like this
//showToast("hello");
}
}
快乐编码:)
答案 1 :(得分:1)
这一切都取决于您的要求,但为了可扩展性,使用基类来放置所有共享功能一直很方便。我非常建议使用抽象类,只需要定义共享行为的不同实现,比如获取类名或屏幕名称。