7

Roman Nurik のライブラリ ( https://plus.google.com/113735310430199015092/posts/6cVymZvn3f4 )を使用してウィザードを作成しようとしています。

Review Fragment から収集されたデータにアクセスできません。mCurrentReviewItems を ReviewFragment で公開してから、このようにしてみました

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

ただし、常に null です。

4

5 に答える 5

11

中身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);

データをウィザードに戻す場合は、これを FragmentActivity の onCreate の最後に置きます。

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

キー「Sandwich:Bread」は例からのもので、好みに合わせて変更してください。マルチ 1 を試してはいけません。多かれ少なかれ同じだと思います。

于 2013-03-04T17:13:04.873 に答える
3

大幅な遅れで申し訳ありませんが、誰かがこの情報が役立つと思うと思います. 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());
  }
}
于 2015-10-16T09:07:17.527 に答える