0

アイテムアップル、バナナ、オレンジを含むリストビューがあります...アップルの特定のアイテムをクリックすると、2番目の画面アクティビティで詳細画面に移動します

ここでは、出力はリンゴのように表示される必要があります。ページをスワイプするとバナナになり、次のスワイプではオラージュになります。

リンゴ->バナナ->オレンジ

しかし、apple->apple->appleのような出力を取得しています。

  Intent detailIntent =new Intent(SecondScreen.this, Details.class);            

    startActivity(detailIntent);


    public class MyApplication extends Application {

        ArrayList<String> totalvalue  = new ArrayList<String>();

    }


    public class Details extends FragmentActivity{

        MyApplication app;
        ViewPager pager;
      MyFragmentPagerAdapter pagerAdapter;     
     public static int position ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.detail);    
        app = ((MyApplication) getApplicationContext());
        pager = (ViewPager) findViewById(R.id.pager);

        FragmentManager fm = getSupportFragmentManager();      
        pagerAdapter = new MyFragmentPagerAdapter(fm,app.totalvalue);   
          pager.setAdapter(pagerAdapter);

      }



    public static class MyFragmentPagerAdapter extends FragmentPagerAdapter {


        private static  ArrayList<String> temperList;



        public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<String> totalvalue ) {
             super(fm);
             this.temperList = totalvalue;
        }


        public Fragment getItem(int position) {

            return ThingFragment.newInstance((temperList.get(position)));
        }

        @Override
        public int getCount(){

        return temperList.size();

        }

         private static class ThingFragment extends Fragment {       
                private String name1;
             static ThingFragment newInstance(String string ) {

                    ThingFragment f = new ThingFragment();
                    Bundle args = new Bundle();

            args.putString("name",temperList.get(position) );
                    f.setArguments(args);

                    return f;
                }



                @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    name1 = getArguments().getString("name");
                }

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,                       Bundle savedInstanceState) {

                    View v = inflater.inflate(R.layout.myfragment_layout, container, false);
                    TextView t = (TextView)v.findViewById(R.id.prodcutt);
                    t.setText(""+ name1);
                    return v;
            }

        }

    }


    }
4

1 に答える 1

0

args.putString("name",temperList.get(position) );ThingFragmentその静的なものとしてあなたの内部で可能であるべきではありません。

それはargs.putString("name",string);

また、temperListアダプタ内で静的であってはなりません(理由はありませんが、パラメータとして渡すだけです)finalprivate final ArrayList<String> temperList;

それでも問題が解決しない場合は、より構造化された個別のコードを投稿してください。そうすれば、アプリケーションがどのように構築されているかを確認できます。アダプターは正常に見えるので、ある時点で配列を書き込んだり上書きしたりする場合があります。

于 2012-11-23T14:42:20.967 に答える