Android TestFairy构建apk后在init片段上验证错误

Android TestFairy构建apk后在init片段上验证错误,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,这是一个奇怪的碰撞,谁能解释它为什么会出现 尝试打开(通过制表符或滑动)ViewPager中的第三个片段时出现崩溃(前两个片段此时自动初始化) 日志中的信息不多,只建议“验证” 当Android Studio创建的apk无法复制时,仅存在于TestFairy创建的apk中 STACK_TRACE=java.lang.VerifyError: .../CaseDetailUsersFragment at ...CaseDetailViewPagerAdapter.getFragment(CaseD

这是一个奇怪的碰撞,谁能解释它为什么会出现

尝试打开(通过制表符或滑动)ViewPager中的第三个片段时出现崩溃(前两个片段此时自动初始化) 日志中的信息不多,只建议“验证”

当Android Studio创建的apk无法复制时,仅存在于TestFairy创建的apk中

STACK_TRACE=java.lang.VerifyError: .../CaseDetailUsersFragment
at ...CaseDetailViewPagerAdapter.getFragment(CaseDetailViewPagerAdapter.java:55)
at ...CaseDetailViewPagerAdapter.getItem(CaseDetailViewPagerAdapter.java:35)
at android.support.v13.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:101)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:836)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1052)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:554)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:494)
at ...CaseDetailViewPagerFragment.onTabSelected(CaseDetailViewPagerFragment.java:148)
at 
...view.MaterialTab.onTouch(MaterialTab.java:191)
at android.view.View.dispatchTouchEvent(View.java:7772)
CaseDetailViewPagerAdapter CaseDetailUsersFragment

修复了两个方法上的break onServiceResult()方法。
在TestFairy日志中的警告中发现W/dalvikvm?VFY:拒绝Lmy.package/MyClass;。methodV

需要在应用程序日志中的dalwik警告中找到此错误的原因 例如: W/dalvikvm?VFY:拒绝Lmy.package/MyClass;。方法

在这种情况下,您需要重构方法,因为您的方法太复杂了。 更多详细答案,请参见:

public class CaseDetailViewPagerAdapter extends FragmentPagerAdapter{
        /**
         * class Adapter for Tabs in CaseDetail
         */
        public class CaseDetailViewPagerAdapter extends FragmentPagerAdapter{
            private final Context context;
            private String caseId;
            private int numItems;
            public CaseDetailViewPagerAdapter(Context context, FragmentManager fm, String caseId, int numItems) {
                super(fm);
                this.context = context;
                this.caseId = caseId;
                this.numItems = numItems;
            }

            @Override
            public Fragment getItem(int i) {
                return getFragment(i);
            }

            @Override
            public int getCount() {
                return numItems;
            }

            /**
             * @return instance of Fragment accordion to selected position
             */
            private Fragment getFragment(int position) {
                switch (position) {
                    case 0:
                        return CaseDetailLogFragment.newInstance(caseId);
                    case 1:
                        return CaseDetailChecklistFragment.newInstance(caseId);
                    case 2:
    //55 line                    return CaseDetailUsersFragment.newInstance(caseId);
                    case 3:
                        return CaseDetailMapFragment.newInstance(caseId);
                }
                return null;
            }
        }
public class CaseDetailUsersFragment extends Fragment {

    public static final int USER_LOADER_ID = 3;
    public static final int GROUP_LOADER_ID = 4;
    static final String CASE_ID = "case_id";
    String caseServerId;



    public static CaseDetailUsersFragment newInstance(String caseId) {
        CaseDetailUsersFragment usersFragment = new CaseDetailUsersFragment();
        Bundle bundle = new Bundle();
        bundle.putString(CASE_ID, caseId);
        usersFragment.setArguments(bundle);
        return usersFragment;
    }

@Override
    public void onServiceResult(long requestId, Intent requestIntent, int resultCode, Bundle resultData) {
        super.onServiceResult(requestId, requestIntent, resultCode, resultData);
        if (requestId == requestIdGetCaseUsersCommand && GetCaseUsersCommand.ACTION.equals(requestIntent.getAction())) {
            requestIdGetCaseUsersCommand = BaseServiceHelper.DEFAULT_REQUEST_ID;
            switch (resultCode) {
                case Command.RESULT_SUCCESSFUL:
                    Logger.logD("onServiceResult finish refreshing");
                    Bundle b = new Bundle();
                    b.putString(CASE_ID, caseServerId);
                    getLoaderManager().restartLoader(USER_LOADER_ID, b, usersLoader);
                    showSwipeProgress(false);
                break;
                case Command.RESULT_FAILURE:
                    showSwipeProgress(false);
                    if (!NetworkHelper.isConnected(getActivity())) {
                        Toast.makeText(getActivity(), R.string.notification_error_no_connection, Toast.LENGTH_LONG).show();
                    } else if (resultData != null) {
                        ErrorInfo errorInfo = resultData.getParcelable(TransitionConstant.ERROR_INFO);
                        if (errorInfo != null) {
                            Toast.makeText(getActivity(), errorInfo.getErrorMessage(), Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(getActivity(), getString(R.string.failure_get_case_list_error_code, resultData.getInt(TransitionConstant.STATUS_ERROR_CODE)), Toast.LENGTH_LONG).show();
                        }
                    } else {
                        Toast.makeText(getActivity(), R.string.failure_get_case_list, Toast.LENGTH_LONG).show();
                    }

                break;
                default:
                    break;
            }
        } else if (requestId == requestIdGetCaseGroupsCommand && GetCaseGroupsCommand.ACTION.equals(requestIntent.getAction())) {
            requestIdGetCaseGroupsCommand = BaseServiceHelper.DEFAULT_REQUEST_ID;
            switch (resultCode) {
                case Command.RESULT_SUCCESSFUL:
                    Logger.logD("onServiceResult finish refreshing groups");
                    Bundle b = new Bundle();
                    b.putString(CASE_ID, caseServerId);
                    getLoaderManager().restartLoader(GROUP_LOADER_ID, b, groupLoader);
                break;
                case Command.RESULT_FAILURE:
                    if (!NetworkHelper.isConnected(getActivity())) {
                        Toast.makeText(getActivity(), R.string.notification_error_no_connection, Toast.LENGTH_LONG).show();
                    } else if (resultData != null) {
                        ErrorInfo errorInfo = resultData.getParcelable(TransitionConstant.ERROR_INFO);
                        if (errorInfo != null) {
                            Toast.makeText(getActivity(), errorInfo.getErrorMessage(), Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(getActivity(), getString(R.string.failure_get_case_list_error_code, resultData.getInt(TransitionConstant.STATUS_ERROR_CODE)), Toast.LENGTH_LONG).show();
                        }
                    } else {
                        Toast.makeText(getActivity(), R.string.failure_get_case_list, Toast.LENGTH_LONG).show();
                    }

                break;
                default:
                    break;
            }
        }
    }
compileSdkVersion 22
buildToolsVersion "22.0.1"
minSdkVersion 16
targetSdkVersion 22