J'ai une application qui a une barre de navigation avec plusieurs fragments.Android IllegalArgumentException étant appelé
En regardant la console de jeu google, et en regardant les accidents. Je vois un tas de java.lang.IllegalArgumentExcpetion
Je ne peux pas sembler reproduire les problèmes, et dans les journaux rien pointe vers mon code.
Quelqu'un peut-il déchiffrer ce qui pourrait être le problème?
La plupart des erreurs ressemblent à ceci alors que d'autres ont des numéros de ligne différents.
java.lang.IllegalArgumentException:
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1293)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Native Method:0)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
EDIT: Voici la fonction MainActivity onNavigationItemSelected
:
switch (id) {
case R.id.dashboard:
if (currentFragment instanceof DashboardFragment) break;
// SET DASHBOARD FRAGMENT
DashboardFragment fragment = new DashboardFragment();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
break;
case R.id.new_trans:
// CLEAR
staticTransaction.reset();
staticCart.reset();
if (currentFragment instanceof newTransFragment) break;
// SET NEW TRANS FRAGMENT
newTransFragment newTransFragment = new newTransFragment();
fragmentTransaction.replace(R.id.fragment_container, newTransFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case R.id.trans_history:
if (currentFragment instanceof transHistoryFragment) break;
// SET TRANS HISTORY FRAGMENT
transHistoryFragment transHistoryFragment = new transHistoryFragment();
fragmentTransaction.replace(R.id.fragment_container, transHistoryFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case R.id.orders:
if (currentFragment instanceof OrdersFragment) break;
// SET ORDERS FRAGMENT
OrdersFragment ordersFragment = new OrdersFragment();
fragmentTransaction.replace(R.id.fragment_container, ordersFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case R.id.pos:
// CLEAR
staticTransaction.reset();
staticCart.reset();
if (currentFragment instanceof POSFragment) break;
// SET POS FRAGMENT
POSFragment posFragment = new POSFragment();
fragmentTransaction.replace(R.id.fragment_container, posFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case R.id.products_list:
if (currentFragment instanceof ProductsFragment) break;
// SET PRODUCTS FRAGMENT
ProductsFragment productsFragment = new ProductsFragment();
fragmentTransaction.replace(R.id.fragment_container, productsFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case R.id.customers_list:
if (currentFragment instanceof CustomersFragment) break;
// SET CUSTOMERS FRAGMENT
CustomersFragment customersFragment = new CustomersFragment();
fragmentTransaction.replace(R.id.fragment_container, customersFragment);
fragmentTransaction.commit();
break;
case R.id.account_settings:
if (currentFragment instanceof accountSettingsFragment) break;
// SET ACCOUNT SETTINGS FRAGMENT
accountSettingsFragment accountSettingsFragment = new accountSettingsFragment();
fragmentTransaction.replace(R.id.fragment_container, accountSettingsFragment);
fragmentTransaction.commit();
break;
case R.id.settings:
if (currentFragment instanceof settingsFragment) break;
// SET SETTINGS FRAGMENT
settingsFragment settingsFragment = new settingsFragment();
fragmentTransaction.replace(R.id.fragment_container, settingsFragment);
fragmentTransaction.commit();
break;
case R.id.test_connection:
if (currentFragment instanceof testConnectionFragment) break;
// SET TEST CONNECTION FRAGMENT
testConnectionFragment testConnectionFragment = new testConnectionFragment();
fragmentTransaction.replace(R.id.fragment_container, testConnectionFragment);
fragmentTransaction.commit();
break;
case R.id.sync:
if (currentFragment instanceof SyncFragment) break;
SyncFragment syncFragment = new SyncFragment();
fragmentTransaction.replace(R.id.fragment_container, syncFragment);
fragmentTransaction.commit();
break;
}
Quand je suis à l'intérieur d'un fragment et que vous souhaitez goto une autre, c'est le code que j'utilise pour le faire:
// GOTO POS
POSFragment posFragment = new POSFragment();
getFragmentManager().beginTransaction().replace(R.id.fragment_container, posFragment).addToBackStack(null).commit();
Lorsque l'intérieur d'une activité est le code ici:
// GOTO ACCOUNT SETTINGS
accountSettingsFragment fragment = new accountSettingsFragment();
FragmentTransaction fragmentTransaction = CustomerViewActivity.this.getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
Bundle bundle = new Bundle();
bundle.putInt("timedOut", 1);
fragment.setArguments(bundle);
fragmentTransaction.commit();
S'il vous plaît coller le code où vous remplacez des fragments – fn5341
@ fn5341 j'edited pour montrer mon activité principale, il y a aussi d'autres endroits qui remplacent le fragment , exemple quand je suis dans un nouveau fragment de transaction, je peux aller au fragment pos – Derek
Consultez cette [question] (https://stackoverflow.com/questions/25665642/java-lang-illegalargumentexception-no-view-found- for-id-0x1020002-androidid-c) – fn5341