編集2 これは誰かを助ける場合に備えて私のアダプターです
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return sDrawables.length;
}
@Override
public Fragment getItem(int position) {
Bundle args = new Bundle();
args.putInt(ImageViewFragment.POSITION_KEY, position);
return ImageViewFragment.newInstance(args);
}
@Override
public CharSequence getPageTitle(int position) {
String name = "";
try{
name = sNames[position];
}catch(IllegalArgumentException e){
name = "error";
}
return name;
}
public int getItemPosition(){
return POSITION_NONE;
}
}
編集 Sino Raj の応答に基づいて変更するだけです:
MainFragmentName fragment= (MainFragmentName )mViewPager.getChildAt(mPosition);
為に:
ImageViewFragment fragment = (ImageViewFragment)mViewPager.getAdapter().instantiateItem(mViewPager, mViewPager.getCurrentItem());
私は常にポケットベルの次の項目を変更するようになりました。その方向に進む場合は右側の項目、そうでない場合は左側の項目です。それに関するアイデアはありますか?
次のエラーが表示されます。
04-16 16:01:16.952: W/System.err(29027): java.lang.NullPointerException
04-16 16:01:16.952: W/System.err(29027): at catalog.ImageViewFragment.onChangePicture(ImageViewFragment.java:165)
04-16 16:01:16.952: W/System.err(29027): at catalog.MenuFragment.changeMainPic(MenuFragment.java:231)
04-16 16:01:16.952: W/System.err(29027): at catalog.MenuFragment.access$6(MenuFragment.java:224)
04-16 16:01:16.952: W/System.err(29027): at catalog.MenuFragment$1.onClick(MenuFragment.java:106)
04-16 16:01:16.952: W/System.err(29027): at android.view.View.performClick(View.java:4202)
04-16 16:01:16.952: W/System.err(29027): at android.view.View$PerformClick.run(View.java:17340)
04-16 16:01:16.952: W/System.err(29027): at android.os.Handler.handleCallback(Handler.java:725)
04-16 16:01:16.952: W/System.err(29027): at android.os.Handler.dispatchMessage(Handler.java:92)
04-16 16:01:16.952: W/System.err(29027): at android.os.Looper.loop(Looper.java:137)
04-16 16:01:16.952: W/System.err(29027): at android.app.ActivityThread.main(ActivityThread.java:5039)
04-16 16:01:16.952: W/System.err(29027): at java.lang.reflect.Method.invokeNative(Native Method)
04-16 16:01:16.952: W/System.err(29027): at java.lang.reflect.Method.invoke(Method.java:511)
04-16 16:01:16.952: W/System.err(29027): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-16 16:01:16.952: W/System.err(29027): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-16 16:01:16.952: W/System.err(29027): at dalvik.system.NativeStart.main(Native Method)
編集終了
私は Android 用のアプリのようなカタログに取り組んできましたが、これは比較的シンプルで、フラグメント サポート v4 を中継しています。
アイデアは、ビュー ページャーに画像の配列を表示することです。ビュー ページャーの子は、ImageView を持つフラグメントです。
ビューページャーは、垂直スクロールをオーバーレイしてメイン画像のさまざまな画像を表示する別のフラグメントに含まれており、クリックするとメイン画像が選択された画像に変わります。
すべてが期待どおりに機能していますが、メイン画像の更新機能はありません。縦スクロール ビューのサムネイルをクリックすると、メインの画像が変更されますが、現在のページのメインの画像が変更される代わりに、オフスクリーン ビューの画像が変更されることがあるという問題があります。
画像を変更しているコードの部分は次のとおりです。
private void changeMainPic(String sName){
try{
if(mViewPager != null){
String tName = sName.replace("_s.jpg", ".jpg");
mainIv = (ImageView)mViewPager.getChildAt(mPosition).findViewById(R.id.mainImageView);
InputStream is2 = getActivity().getAssets().open(tName);
Bitmap bm2 = BitmapFactory.decodeStream(is2);
mainIv.setImageBitmap(bm2);
is2.close();
}
}catch(Exception e){
e.printStackTrace();
Log.e("Pictures","error on main iv "+e);
}
}
何が悪いのか考えていますか?コードの他の部分が必要な場合は教えてください。
みなさん、これからよろしくお願いします
デビッド