package com.camnter.databinding.view;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
/**
* Description:BindingActivity
* @author CaMnter
*/
public abstract class BindingActivity extends AppCompatActivity {
protected ViewDataBinding rootBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.onBeforeDataBinding(savedInstanceState);
final int layoutId = this.getLayoutId();
if (layoutId == 0) return;
try {
if (this.autoSetContentView()) {
this.rootBinding = DataBindingUtil.setContentView(this, layoutId);
}
// binding success, but maybe this.contentViewBinding == null
this.onCastingRootBinding(this.rootBinding);
// cast success
this.baseActivityInit();
this.onAfterDataBinding(savedInstanceState);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* default true
*
* @return auto ?
*/
protected boolean autoSetContentView() {
return true;
}
/**
* Fill in layout id
*
* @return layout id
*/
protected abstract int getLayoutId();
/**
* on casting root binding
*
* @param rootBinding rootBinding
*/
protected abstract void onCastingRootBinding(
@Nullable final ViewDataBinding rootBinding);
/**
* on before data binding
*
* @param savedInstanceState savedInstanceState
*/
protected void onBeforeDataBinding(@Nullable final Bundle savedInstanceState) {
// Nothing to do
}
/**
* baseActivity init
*/
protected void baseActivityInit() {
// Nothing to do
}
/**
* on after data binding
*
* @param savedInstanceState savedInstanceState
*/
protected abstract void onAfterDataBinding(@Nullable final Bundle savedInstanceState);
}