BaseActivity pour la Navigation

Je suis en train de construire une base de l'activité de navigation et veulent quelque chose de flexible, afin que l'Activité dicte à la Base de l'Activité de mise en page à gonfler.

J'ai le texte suivant

public abstract class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    private int mLayoutRes;

    protected void setLayout(int layoutRes) {
        mLayoutRes = layoutRes;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(mLayoutRes);

        //Layout implements toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        if (toolbar != null){
            setSupportActionBar(toolbar);
        }


        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        //The layout implements the nav
        if (drawer != null){
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.setDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
        }

    }
//Other Nav code ommitted as its too verbose
}

Puis la Mise en page est passé de l'activité épouse

public class Home extends BaseActivity {

    private final String TAG = "Home";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.setLayout(R.layout.activity_home);
        super.onCreate(savedInstanceState);
        //Other Activity code
    }
}

Est-il un meilleur moyen pour y parvenir?
Peut-être mettre une base de mise en page avec un cadre de contenu et de gonfler à cela?

Toutes les suggestions seraient appréciées.

  • Sur le plan conceptuel, il serait préférable de définir getLayout() dans la classe de base, et de la remplacer dans les sous-classes. super.set() n'est pas quelque chose que vous voyez souvent.