J'ai un problème dans android. Lorsque j'essaie de sélectionner le premier élément au démarrage, et sélectionnez un autre élément sauf le premier élément, j'ai deux éléments sélectionnés. C'est mon code. J'ai ajouté navigationView.getMenu(). PerformIdentifierAction (R.id.menu_program, 0) pour sélectionner le premier élément mais je pense que le problème vient de ceci (je ne sais pas). MerciAndroid style deux éléments sélectionnés
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private Toolbar toolbar;
private NavigationView navigationView;
private ActionBarDrawerToggle actionBarDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
actionBarDrawerToggle = setupActionBarDrawerToggle();
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
navigationView = (NavigationView) findViewById(R.id.navigation_view);
setupNavigationViewContent(navigationView);
if (savedInstanceState == null) {
navigationView.getMenu().performIdentifierAction(R.id.menu_program, 0);
}
}
private ActionBarDrawerToggle setupActionBarDrawerToggle() {
return new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
}
private void setupNavigationViewContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
selectNavigationViewItem(item);
return true;
}
});
}
private void selectNavigationViewItem(MenuItem item) {
/*if (lastItem == null) {
lastItem = item;
item.setChecked(true);
Log.e("TAG", "selectNavigationViewItem: "+lastItem);
} else {
lastItem.setChecked(false);
}*/
Fragment fragment = null;
Class fragmentClass;
switch (item.getItemId()) {
case R.id.menu_program:
fragmentClass = Fragment1.class;
break;
case R.id.menu_visitor:
fragmentClass = Fragment2.class;
break;
case R.id.menu_partner:
fragmentClass = Fragment3.class;
break;
case R.id.menu_about:
fragmentClass = Fragment4.class;
break;
case R.id.menu_team:
fragmentClass = Fragment5.class;
break;
case R.id.menu_contact:
fragmentClass = Fragment6.class;
break;
default:
fragmentClass = Fragment1.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_layout_content, fragment).commit();
item.setChecked(true);
setTitle(item.getTitle());
drawerLayout.closeDrawers();
}
@Override
public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onPostCreate(savedInstanceState, persistentState);
actionBarDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
actionBarDrawerToggle.onConfigurationChanged(newConfig);
}
}
avez-vous essayé dans votre menu.xml? –
siva35
ya, comme je le dis ci-dessous le problème est résolu mais maintenant quand j'essaye de faire pivoter le premier article n'est pas vérifié. cos le onCreate est appelé et savedInstance n'est pas nul –