Как открыть меню в навигационном ящике с помощью фрагментов?

#android #android-fragments #navigation-drawer

Вопрос:

Поэтому я хочу, чтобы при нажатии на «Домой» открывался фрагмент «Домой», а при нажатии на «Вызов» открывался фрагмент вызова и так далее, Но это не работает, я следую учебнику и делаю то же самое, но я не знаю, почему это не работает

Вот основные Activity.java код

 package android.example.navnew;

import static android.example.navnew.R.id.*;
import static android.example.navnew.R.id.container;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;

import android.app.Fragment;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;
import android.example.navnew.HomeFragment;
import com.google.android.material.navigation.NavigationView;

public class MainActivity extends AppCompatActivity {


   NavigationView nav;
   DrawerLayout drawerLayout;
   ActionBarDrawerToggle toggle;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //toolbar
     Toolbar toolbar = findViewById(R.id.toolbar);
     setSupportActionBar(toolbar);


        nav = findViewById(navmenu);
        drawerLayout = findViewById(drawer);

       toggle = new ActionBarDrawerToggle(this , drawerLayout ,toolbar, R.string.open , R.string.close);
       drawerLayout.addDrawerListener(toggle);
       toggle.syncState();

        getSupportFragmentManager().beginTransaction().replace(contain,new HomeFragment()).commit();
        nav.setCheckedItem(menu_home);
       nav.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
         //  @Override
           Fragment temp;
           public boolean onNavigationItemSelected(@NonNull MenuItem item) {
               switch (item.getItemId())
               {
                   case menu_home:
                       temp=new HomeFragment();
                       Toast.makeText(getApplicationContext(), "Home par click", Toast.LENGTH_SHORT).show();
                        drawerLayout.closeDrawer(GravityCompat.START);
                        break;
                   case menu_call :
                        temp=new CallFragment();
                        Toast.makeText(getApplicationContext(), "call par click", Toast.LENGTH_SHORT).show();
                        drawerLayout.closeDrawer(GravityCompat.START);
                       break;
                   case menu_settings:
                       temp=new SettingsFragment();
                       Toast.makeText(getApplicationContext(), "settings par click", Toast.LENGTH_SHORT).show();
                       drawerLayout.closeDrawer(GravityCompat.START);
                       break;
               }
               getSupportFragmentManager().beginTransaction().replace(contain,temp).commit();

               drawerLayout.closeDrawer(GravityCompat.START);
               return true;
           }
       });


 
    }
}
 

Из какого учебника, по которому я следую, введите описание ссылки здесь

Комментарии:

1. Ваш код не завершен, как вы назначаете contain переменную?