Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 子片段';使用Support lib v4 rev20时未调用s onCreateView()_Android_Android Fragments_Android Support Library - Fatal编程技术网

Android 子片段';使用Support lib v4 rev20时未调用s onCreateView()

Android 子片段';使用Support lib v4 rev20时未调用s onCreateView(),android,android-fragments,android-support-library,Android,Android Fragments,Android Support Library,我对手机的看法如下: MainActivity包含PaymentsFragment,其中包含一个FragmentPagerAdapter,而后者又包含2个TransactionListFragments PaymentFragment示例代码: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRe

我对手机的看法如下:

MainActivity
包含
PaymentsFragment
,其中包含一个
FragmentPagerAdapter
,而后者又包含2个
TransactionListFragments

PaymentFragment
示例代码:

  @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);


        mPaymentsPagerAdapter = new PaymentsPagerAdapter(getActivity(), getChildFragmentManager(), this);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.fragment_payments, container, false);
        assert view != null;


        if (!isFirstRun)
            mPaymentsPagerAdapter.setOnTransactionClickListener(this);
        else
            isFirstRun = false;
        ViewPager viewPager = (ViewPager) view.findViewById(R.id.fragment_payments_viewpager);
        viewPager.setAdapter(mPaymentsPagerAdapter);
        PagerSlidingTabStrip pagerSlidingTabStrip = (PagerSlidingTabStrip) view.findViewById(R.id.fragment_payments_tabstrip);
        pagerSlidingTabStrip.setViewPager(viewPager);


        return view;
    }
  @Override
    public Fragment getItem(int position)
    {
        switch (position)
        {
            case 0:
                TransactionsListFragment recurringPaymentsListFragment = TransactionsListFragment.newRecurringPaymentsInstance();
                recurringPaymentsListFragment.setOnTransactionClickListener(mPaymentsFragment);
                return recurringPaymentsListFragment;

            case 1:
                TransactionsListFragment paymentsListFragment = TransactionsListFragment.newPaymentsInstance();
                paymentsListFragment.setOnTransactionClickListener(mPaymentsFragment);
                return paymentsListFragment;
        }
        return null;
    }
PaymentsPagerAdapter
示例代码:

  @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);


        mPaymentsPagerAdapter = new PaymentsPagerAdapter(getActivity(), getChildFragmentManager(), this);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.fragment_payments, container, false);
        assert view != null;


        if (!isFirstRun)
            mPaymentsPagerAdapter.setOnTransactionClickListener(this);
        else
            isFirstRun = false;
        ViewPager viewPager = (ViewPager) view.findViewById(R.id.fragment_payments_viewpager);
        viewPager.setAdapter(mPaymentsPagerAdapter);
        PagerSlidingTabStrip pagerSlidingTabStrip = (PagerSlidingTabStrip) view.findViewById(R.id.fragment_payments_tabstrip);
        pagerSlidingTabStrip.setViewPager(viewPager);


        return view;
    }
  @Override
    public Fragment getItem(int position)
    {
        switch (position)
        {
            case 0:
                TransactionsListFragment recurringPaymentsListFragment = TransactionsListFragment.newRecurringPaymentsInstance();
                recurringPaymentsListFragment.setOnTransactionClickListener(mPaymentsFragment);
                return recurringPaymentsListFragment;

            case 1:
                TransactionsListFragment paymentsListFragment = TransactionsListFragment.newPaymentsInstance();
                paymentsListFragment.setOnTransactionClickListener(mPaymentsFragment);
                return paymentsListFragment;
        }
        return null;
    }
TransactionListFragment
内部,没有发生什么事情。此外,它的onCreate()和onCreateView()都没有被调用,所以我认为
PaymentsFragment
PaymentsPayGeradapter
中都有错误


问题是,在升级到支持v4 lib rev20之前,所有的代码都工作正常。我降级到rev19,它又开始工作了。那么,关于是什么导致rev 20失败的想法,或者是一个bug?另外,如果有的话,解决方法是什么?

显然,支持库中的
setRetainInstance()
方法发生了一些变化,从v20开始,继续到v21,再加上Android 5.0

当我从父片段中删除
setRetainInstance(true)
后,它就开始工作了