Java 正在调用Android IllegalArgumentException

Java 正在调用Android IllegalArgumentException,java,android,Java,Android,我有一个应用程序,它有一个带有多个片段的导航栏 看看google play控制台,看看崩溃。我看到一堆java.lang.illegalargumentexpetion 我似乎无法复制这些问题,日志中也没有任何东西指向我的代码 有人能解释出问题出在哪里吗 大多数错误都是这样的,而有些错误的行号不同 java.lang.IllegalArgumentException: at android.support.v4.app.FragmentManagerImpl.moveToState(Fra

我有一个应用程序,它有一个带有多个片段的导航栏

看看google play控制台,看看崩溃。我看到一堆
java.lang.illegalargumentexpetion

我似乎无法复制这些问题,日志中也没有任何东西指向我的代码

有人能解释出问题出在哪里吗

大多数错误都是这样的,而有些错误的行号不同

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)
编辑: 以下是
main活动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;

}
当我在一个片段中,想要转到另一个片段时,我使用以下代码:

// GOTO POS
POSFragment posFragment = new POSFragment();
getFragmentManager().beginTransaction().replace(R.id.fragment_container, posFragment).addToBackStack(null).commit();
当在活动中时,这里是代码:

// 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();

正在发生的是您调用来自不同活动的片段

您正在尝试:
Activity2->accountSettingsFragment
,但实际上它看不到

您需要做的是转到保存
accountSettingsFragment

Intent i = new Intent(currentActivity.this,MainActivity.class);
startActivity(i);

正如@OmerHayat在这里回答我的问题时所描述的,我已经解决了这个问题。访问此链接

也把这个放到Try-catch块中

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();

请将代码粘贴到替换的位置fragments@fn5341我编辑以显示我的主要活动,也有其他地方替换片段,例如,当我在新的交易片段中时,我可以转到pos片段检查这一点您在其他活动中有任何片段吗?