何らかの理由で、文字列の配列を含む私のフラグメントバンドルが、私のフラグメントのoncreateメソッドでnullになります。フラグメントを作成するときにURLの配列を渡そうとしているので、別のイメージURLをフィードするときにイメージビュー内の異なるイメージをレンダリングします。最初はコンストラクタでこれを行いましたが、アンドロイドはデフォルトのコンストラクタではないコンストラクタを使用していたことを気に入らなかったのです。私は、フラグメントのoncreateメソッドが、フラグメントがフラグメントに渡される前に、フラグメントのoncreateメソッドが呼び出されているという事実からエラーが発生していると仮定していますが、コンストラクタを経由せずにフラグメントに情報を早く渡す方法はわかりません。フラグメントgetArguments()がnullを返しています
フラグメントがインスタンス化されるコードは次のとおりです。
private void initViewPager() {
viewPager = (ViewPager) findViewById(R.id.view_pager);
List<Fragment> listFragments = new ArrayList<Fragment>();
for(int i = 0; i < tabNames.length; i++)
{
Bundle bundle = new Bundle();
ImageViewerFragment imageViewerFragment = new ImageViewerFragment();
listFragments.add(imageViewerFragment);
switch(tabNames[i])
{
case "All":
bundle.putStringArray("urls", URLS.randomURLs);
break;
case "Zombie":
bundle.putStringArray("urls", URLS.zombieURLS);
break;
case "Captain":
bundle.putStringArray("urls", URLS.captainURLS);
break;
case "Awesome":
bundle.putStringArray("urls", URLS.awesomeURLS);
break;
}
}
MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), listFragments);
viewPager.setAdapter(myFragmentPagerAdapter);
viewPager.addOnPageChangeListener(this);
}
マイ・フラグメントクラス
public class ImageViewerFragment extends Fragment {
GridView mGridView;
ImageAdapter mImageAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.imageviewerfragment_layout, container, false);
mGridView = (GridView) view.findViewById(R.id.grid_view);
mImageAdapter = new ImageAdapter(getActivity(), getArguments().getStringArray("urls"));
mGridView.setAdapter(mImageAdapter);
return view;
}
}
ええ、私もちょっと気付いた、ありがとう。 –