Основной файл и меню - PullRequest
       37

Основной файл и меню

0 голосов
/ 17 сентября 2018

Не повторять код несколько раз, расширяя действия из основного корневого файла (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, он всегда помечает меня как ошибку.

...