Не повторять код несколько раз, расширяя действия из основного корневого файла (BaseActivity). У меня есть два меню для мероприятий: одно основное и одно меню. Можно ли написать код Java на одной странице, чтобы не повторять его каждый раз?
public class MyListSiteActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener {
// other code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_list_site);
// Drawer menu
drawerLayout = (DrawerLayout) findViewById(R.id.dlMenu);
toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
NavigationView navigationView = (NavigationView) findViewById(R.id.nvMenu);
navigationView.setNavigationItemSelectedListener(this);
// other code
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//primary menu
if (id == R.id.login) {
Intent intentLogin = new Intent(this, Login.class);
this.startActivity(intentLogin);
return true;
} else if (id == R.id.setting){
return true;
}
// drawer menu
if (toggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
// drawer menu
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()) {
case R.id.insertSite:
Intent intentSiteActivity = new Intent(this, InsertSiteActivity.class);
startActivity(intentSiteActivity);
return true;
case R.id.myListSite:
Intent intentMyListSite = new Intent(this, MyListSiteActivity.class);
startActivity(intentMyListSite);
return true;
default:
return false;
}
}
}
BaseActivity:
public class BaseActivity extends AppCompatActivity {
public DrawerLayout drawerLayout;
public ActionBarDrawerToggle toggle;
// other code
// other code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
// other code
}
}
Когда я пытаюсь поместить код меню в файл на BaseActivity, он всегда помечает меня как ошибку.