title: how to call a fragment on menu drawer?
body: <p>I am new at android and i am making a dictionary app with youtube tutorials, android.com, stackoverflow etc. for trainig. Now i have an issue with main drawer. I am gonna try explain with pics.</p>
  
  <p><a href="https://i.imgur.com/s9EjAna.jpg" rel="nofollow noreferrer">https://i.imgur.com/s9EjAna.jpg</a></p>
  
  <p>When i start the app, dictionary page opening, it's okey. when i click to bookmark, bookmark page opening it's okey too but when i at bookmark page and clicking dictionary link, the dictionary page doesn't open. </p>
  
  <p>here my codes, i used same codes for bookmark and dictionary page. </p>
  
  <pre><code>    @Override
      public boolean onNavigationItemSelected(MenuItem item) {
          // Handle navigation view item clicks here.
          int id = item.getItemId();
          if (id == R.id.nav_bookmark){
  
              String activeFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container).getClass().getSimpleName();
              if (!activeFragment.equals(BookmarkFragment.class.getSimpleName())){
  
              goToFragment(bookmarkFragment, false);
              }
          }
  
          if (id == R.id.nav_dict){
  
              String activeFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container).getClass().getSimpleName();
              if (!activeFragment.equals(BookmarkFragment.class.getSimpleName())){
  
                  goToFragment(dictionaryFragment, false);
              }
          }
  
          DrawerLayout drawer = findViewById(R.id.drawer_layout);
          drawer.closeDrawer(GravityCompat.START);
          return true;
      }
  
  </code></pre>
  
  <p>but i think (it's just a guess, i am not sure) the problem is this codes</p>
  
  <pre><code>    @Override
      public void onBackPressed() {
          DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
          if (drawer.isDrawerOpen(GravityCompat.START)) {
              drawer.closeDrawer(GravityCompat.START);
          } else {
              super.onBackPressed();
          }
      }
  
  </code></pre>
  
  <p>my all MainActivity.java is here</p>
  
  <pre><code>package com.example.dict;
  
  import android.annotation.TargetApi;
  import android.content.Intent;
  import android.os.Build;
  import android.os.Bundle;
  import android.view.WindowManager;
  
  
  import com.google.android.material.floatingactionbutton.FloatingActionButton;
  import com.google.android.material.snackbar.Snackbar;
  
  import android.text.Editable;
  import android.text.TextWatcher;
  import android.view.View;
  
  import androidx.annotation.RequiresApi;
  import androidx.core.view.GravityCompat;
  import androidx.appcompat.app.ActionBarDrawerToggle;
  
  import android.view.MenuItem;
  
  import com.google.android.material.navigation.NavigationView;
  
  import androidx.drawerlayout.widget.DrawerLayout;
  
  import androidx.appcompat.app.AppCompatActivity;
  import androidx.appcompat.widget.Toolbar;
  import androidx.fragment.app.Fragment;
  import androidx.fragment.app.FragmentManager;
  import androidx.fragment.app.FragmentTransaction;
  
  import android.view.Menu;
  import android.widget.EditText;
  import android.widget.Toast;
  
  import java.util.ArrayList;
  
  public class MainActivity extends AppCompatActivity
          implements NavigationView.OnNavigationItemSelectedListener {
  
      MenuItem menuSetting;
      Toolbar toolbar;
  
  
      DBHelper dbHelper;
  
      DictionaryFragment dictionaryFragment;
      BookmarkFragment bookmarkFragment;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          toolbar = findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
  
          dbHelper = new DBHelper(this);
  
          DrawerLayout drawer = findViewById(R.id.drawer_layout);
          NavigationView navigationView = findViewById(R.id.nav_view);
          ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                  this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
          drawer.addDrawerListener(toggle);
          toggle.syncState();
          navigationView.setNavigationItemSelectedListener(this);
  
          dictionaryFragment = new DictionaryFragment();
          bookmarkFragment = BookmarkFragment.getInstance(dbHelper);
          goToFragment(dictionaryFragment, true);
  
          dictionaryFragment.setOnFragmentListener(new FragmentListener() {
              @Override
              public void onItemClick(String value) {
                  String id =  Global.getState(MainActivity.this,"dict_type");
                  int dicType = id == null? R.id.eng_kh:Integer.valueOf(id);
                  goToFragment(DetailFragment.getNewInstance(value, dbHelper, dicType), false);
              }
          });
          bookmarkFragment.setOnFragmentListener(new FragmentListener() {
              @Override
              public void onItemClick(String value) {
  
                  String id =  Global.getState(MainActivity.this,"dict_type");
                  int dicType = id == null? R.id.eng_kh:Integer.valueOf(id);
                  goToFragment(DetailFragment.getNewInstance(value, dbHelper, dicType), false);
              }
          });
  
          EditText edit_search  = findViewById(R.id.edit_search);
          edit_search.addTextChangedListener(new TextWatcher() {
              @Override
              public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  
              }
  
              @Override
              public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                  dictionaryFragment.filterValue(charSequence.toString());
              }
  
              @Override
              public void afterTextChanged(Editable editable) {
  
              }
          });
  
          getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
  
      }
  
      @Override
      public void onBackPressed() {
          DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
          if (drawer.isDrawerOpen(GravityCompat.START)) {
              drawer.closeDrawer(GravityCompat.START);
          } else {
              super.onBackPressed();
          }
      }
  
      @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
  
          super.onCreateOptionsMenu(menu);
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.main, menu);
          menuSetting = menu.findItem(R.id.action_settings);
  
      String id =  Global.getState(this,"dict_type");
      if (id != null)
          onOptionsItemSelected(menu.findItem(Integer.valueOf(id)));
  
      else {
          ArrayList&lt;String&gt; source =dbHelper.getWord(R.id.eng_kh);
      dictionaryFragment.resetDatasource(source);
  
  
      }
          return true;
      }
  
      @TargetApi(Build.VERSION_CODES.LOLLIPOP)
      @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          // Handle action bar item clicks here. The action bar will
          // automatically handle clicks on the Home/Up button, so long
          // as you specify a parent activity in AndroidManifest.xml.
          int id = item.getItemId();
          //noinspection SimplifiableIfStatement
          if (id == R.id.eng_kh) {
              Global.saveState(this, "dict_type", String.valueOf(id));
              ArrayList&lt;String&gt; source = dbHelper.getWord(id);
              dictionaryFragment.resetDatasource(source);
              menuSetting.setIcon(getDrawable(R.drawable.ic_lang));
              return true;
  
          } else if (id==R.id.kh_eng){
              Global.saveState(this, "dict_type", String.valueOf(id));
              ArrayList&lt;String&gt; source = dbHelper.getWord(id);
              dictionaryFragment.resetDatasource(source);
              menuSetting.setIcon(getDrawable(R.drawable.ic_lang2));
              return true;
  
          }   else if (id==R.id.kh_kh){
              Global.saveState(this, "dict_type", String.valueOf(id));
              ArrayList&lt;String&gt; source = dbHelper.getWord(id);
              dictionaryFragment.resetDatasource(source);
              menuSetting.setIcon(getDrawable(R.drawable.ic_lang3));
              return true;
          }
  
  
          return super.onOptionsItemSelected(item);
      }
  
      @SuppressWarnings("StatementWithEmptyBody")
      @Override
      public boolean onNavigationItemSelected(MenuItem item) {
          // Handle navigation view item clicks here.
          int id = item.getItemId();
          if (id == R.id.nav_bookmark){
  
              String activeFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container).getClass().getSimpleName();
              if (!activeFragment.equals(BookmarkFragment.class.getSimpleName())){
  
              goToFragment(bookmarkFragment, false);
              }
          }
  
          if (id == R.id.nav_dict){
  
              String activeFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container).getClass().getSimpleName();
              if (!activeFragment.equals(BookmarkFragment.class.getSimpleName())){
  
                  goToFragment(dictionaryFragment, false);
              }
          }
  
          DrawerLayout drawer = findViewById(R.id.drawer_layout);
          drawer.closeDrawer(GravityCompat.START);
          return true;
      }
  
  
  
  
      void goToFragment(Fragment fragment, boolean isTop){
  
          FragmentManager fragmentManager = getSupportFragmentManager();
          FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
  
  
          fragmentTransaction.replace(R.id.fragment_container, fragment);
          if (!isTop)
              fragmentTransaction.addToBackStack(null);
          fragmentTransaction.commit();
      }
  
  
      @Override
      public boolean onPrepareOptionsMenu(Menu menu) {
  
          String activeFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container).getClass().getSimpleName();
          if (activeFragment.equals(BookmarkFragment.class.getSimpleName())){
              menuSetting.setVisible(false);
              toolbar.findViewById(R.id.edit_search).setVisibility(View.GONE);
              toolbar.setTitle("Bookmark");
          }else  {
              menuSetting.setVisible(true);
              toolbar.findViewById(R.id.edit_search).setVisibility(View.VISIBLE);
              toolbar.setTitle("");
          }
          return true;
      }
  }
  
  
  </code></pre>
  
  <p>and my activity_main_drawer is here</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      tools:showIn="navigation_view"&gt;
  
  
  
      &lt;item android:title="Network"&gt;
          &lt;menu&gt;
  
              &lt;item
                  android:id="@+id/nav_dict"
                  android:icon="@drawable/ic_dict"
                  android:title="Dictionary"/&gt;
  
              &lt;item
                  android:id="@+id/nav_bookmark"
                  android:icon="@drawable/ic_bookmark"
                  android:title="@string/menu_bookmark" /&gt;
  
              &lt;item
                  android:id="@+id/nav_rate"
                  android:icon="@drawable/ic_thumb"
                  android:title="@string/menu_rate" /&gt;
  
              &lt;item
                  android:id="@+id/nav_share"
                  android:icon="@drawable/ic_menu_share"
                  android:title="@string/menu_share" /&gt;
  
          &lt;/menu&gt;
      &lt;/item&gt;
      &lt;item android:title="Other"&gt;
          &lt;menu&gt;
  
              &lt;item
                  android:id="@+id/nav_help"
                  android:icon="@drawable/ic_help"
                  android:title="@string/menu_help" /&gt;
  
              &lt;item
                  android:id="@+id/nav_about"
                  android:icon="@drawable/ic_info"
                  android:title="@string/menu_about" /&gt;
  
          &lt;/menu&gt;
      &lt;/item&gt;
  
  &lt;/menu&gt;
  
  
  </code></pre>
  
  <p>if you need any more code, i can paste here. Thanks.</p>