我试图让使用罗马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);
}
}
}
});
但是它总是空。
里面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);
}
关键的“三明治:面包”是由例如,更改任何适合你。 切勿多一个,我认为这是或多或少相同。
对不起,大延迟,但我认为,有人会发现这些信息很有用。 我找到了一种方法来获取所有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());
}
}
这是我的代码@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());
}
}
}
}
});
最好的解决办法是在项目中包含的模块这个库,并实现自己在ReviewFragment获得评审项目的方法。
public List<ReviewItem> getReviewItems() {
return mCurrentReviewItems;
}
我不知道为什么开发商没有补充说。 这是一个在项目中最重要的事情。 选择项目,并做一些与他们。
任何人仍在寻找这个问题,你可以使用下面的代码的解决方案
ArrayList<ReviewItem> reviewItems = new ArrayList<ReviewItem>();
for (Page page : mWizardModel.getCurrentPageSequence()) {
page.getReviewItems(reviewItems);
}