#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
переменную?