罗马Nurik的向导寻呼机 - 如何访问收集到的数据?(Roman Nurik's Wiza

2019-08-16 20:10发布

我试图让使用罗马Nurik的图书馆(向导https://plus.google.com/113735310430199015092/posts/6cVymZvn3f4 )。

我无法访问来自审查碎片收集的数据。 我在做ReviewFragment公共mCurrentReviewItems,然后我试图像这样

mNextButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (mPager.getCurrentItem() == mCurrentPageSequence.size()) {
            ReviewFragment reviewFragment = (ReviewFragment)  mPagerAdapter.getItem(mPager.getCurrentItem());

            for (ReviewItem item : reviewFragment.mCurrentReviewItems)
                Log.d(MainActivity.TAG, "Item: " + item.getDisplayValue());
            }

        } else {
            if (mEditingAfterReview) {
                mPager.setCurrentItem(mPagerAdapter.getCount() - 1);
            } else {
                    mPager.setCurrentItem(mPager.getCurrentItem() + 1);
            }
        }
   }
});

但是它总是空。

Answer 1:

里面if (mPager.getCurrentItem() == mCurrentPageSequence.size()) { }

对于单页变量:

String data = mWizardModel.findByKey("Sandwich:Bread").getData().getString(Page.SIMPLE_DATA_KEY);

对于自定义页面:

String data = 
mWizardModel.findByKey(THE_KEY).getData().getString(CustomerInfoPage.YOUR_DATA_KEY);

如果你想将数据分配回向导,把这个在的onCreate的FragmentActivity结束:

Bundle data = new Bundle();
if (!TextUtils.isEmpty(DATA_STRING)) {
    data.putString(Page.SIMPLE_DATA_KEY, DATA_STRING);
    mWizardModel.findByKey("Sandwich:Bread"").resetData(data);
}

关键的“三明治:面包”是由例如,更改任何适合你。 切勿多一个,我认为这是或多或少相同。



Answer 2:

对不起,大延迟,但我认为,有人会发现这些信息很有用。 我找到了一种方法来获取所有ReviewItems ,因为你可以有很多树枝,你将无法使用第一个答案。

我敢肯定,你mPagerAdapter::getItem代码示例中看起来像(所以它只是返回,而不是返回当前寻呼机片段新片段)。 你必须使用instantiateItem得到您参考ReviewFragment

Object o = mPager.getAdapter().instantiateItem(mPager, mPager.getCurrentItem());
if(o instanceof ReviewFragment) {
  List<ReviewItem> items = ((ReviewFragment) o).getCurrentReviewItems();
  if(items != null) {
    Log.v(TAG, "Items are: " + items.toString());
  }
}


Answer 3:

这是我的代码@Anton_Shkurenko

mNextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mPager.getCurrentItem() == mCurrentPageSequence.size()) {
                Object o = mPager.getAdapter().instantiateItem(mPager, mPager.getCurrentItem());
                if(o instanceof ReviewFragment) {
                    List<ReviewItem> items = ((ReviewFragment) o).getCurrentReviewItems();
                    if(items != null) {
                        Log.v(TAG, "Items are: " + items.toString());
                    }
                }
            }
        }
    });


Answer 4:

最好的解决办法是在项目中包含的模块这个库,并实现自己在ReviewFragment获得评审项目的方法。

public List<ReviewItem> getReviewItems() {
    return mCurrentReviewItems;
}

我不知道为什么开发商没有补充说。 这是一个在项目中最重要的事情。 选择项目,并做一些与他们。



Answer 5:

任何人仍在寻找这个问题,你可以使用下面的代码的解决方案

    ArrayList<ReviewItem> reviewItems = new ArrayList<ReviewItem>();
    for (Page page : mWizardModel.getCurrentPageSequence()) {
        page.getReviewItems(reviewItems);
    }


文章来源: Roman Nurik's Wizard pager - how to access collected data?