Ich habe ein Problem in Android. Wenn ich versuche, das erste Element beim Start auszuwählen, und wähle ein anderes Element als das erste Element, so dass ich zwei Elemente ausgewählt habe. Das ist mein Code. Ich habe navigationView.getMenu(). PerformIdentifierAction (R.id.menu_program, 0) hinzugefügt, um das erste Element auszuwählen, aber ich denke, dass das Problem daraus kommt (ich weiß es nicht).Android-Stil zwei Elemente ausgewählt
Dankpublic 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);
}
}
haben Sie versucht, in Ihrem menu.xml? –
siva35
ya, wie ich unten sage, das Problem ist gelöst, aber jetzt, wenn ich versuche zu drehen, wird das erste Element nicht überprüft. cos die onCreate wird aufgerufen und savedInstance ist nicht null –