私は再現できないクラッシュスティックスでクラッシュし、どこに発生するのかわかりません。受け取ったすべてのログを以下に転記してください。あなたはandroid.support.design.internalのクラスですNavigationMenuPresenterとNavigationMenuAdapterログから見ることができるようにConcurrentModificationException - アクティビティを開始できません
Fatal Exception: java.lang.RuntimeException
Unable to start activity ComponentInfo{.main.MainActivity}: java.util.ConcurrentModificationException
Caused by java.util.ConcurrentModificationException
java.util.ArrayList$ArrayListIterator.next (ArrayList.java:573)
android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.restoreInstanceState (NavigationMenuPresenter.java:587)
android.support.design.internal.NavigationMenuPresenter.onRestoreInstanceState (NavigationMenuPresenter.java:191)
。 Navigation DrawerメニューといくつかのArrayList(私が間違っている場合は私を修正してください)と関係があるように、その名前から見えます。メニューの状態を復元しようとすると、何らかのエラーが発生しますか?ここで
は、ナビゲーションメニューを作成するためのコード
private void setupDrawer(Toolbar toolbar) {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
initAvailabilityChange(navigationView);
initMenuHeaderViews(navigationView);
}
private void initAvailabilityChange(NavigationView navigationView) {
switchItem = navigationView.getMenu().findItem(R.id.availability);
CompoundButton switchView = (CompoundButton) MenuItemCompat.getActionView(switchItem);
switchNew = (Switch) switchView.findViewById(R.id.switchLocation);
switchView.setOnCheckedChangeListener((buttonView, isChecked) -> {
isOnShift = isChecked;
presenter.onAvailabilityChange(isOnShift, this);
if (isChecked) {
switchItem.setTitle(R.string.availability_on_shift);
} else {
switchItem.setTitle(R.string.availability_off_shift);
}
});
}
private void initMenuHeaderViews(NavigationView navigationView) {
View header = navigationView.getHeaderView(0);
tvName = (TextView) header.findViewById(R.id.tvName);
tvRank = (TextView) header.findViewById(R.id.tvRank);
}
は、任意の助けのために本当に感謝されるです。
ArrayListを反復処理してループの項目を変更するコードを調べる必要があります。そのコードを共有してください: –
あなたの投稿に 'NavigationMenuPresenter.java:587'のコードを追加してください。 – torkleyy
' onRestoreInstanceState() 'であなたのコードを共有できますか? NavigationMenuPresenter @torkleyy – hsl