Я создаю базовую активность для навигации и хочу что-то гибкое, чтобы действие определяло базовую активность, которую макет для раздувания.
У меня есть следующее
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
}
Затем макет передается из действия как folow
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
}
}
Есть ли лучший способ достичь этого? Может быть, установить базовый макет с кадром контента и раздувать его?
Любые предложения будут оценены.