0

fragment の textview のテキストを変更したいのですが、これは instantiateItem で簡単に行うことができますが、 instantiateItem の後、 textView は null であり、呼び出すことができません

MyPagerAdapter.textView.SetText();

private class MyPagerAdapter extends PagerAdapter {


        TextView textView;

        public int getCount() {
            return 5;
        }

        public Object instantiateItem(View collection, int position) {

            LayoutInflater inflater = (LayoutInflater) collection.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            int resId = 0;
            switch (position) {
            case 0:
                resId = R.layout.farleft;
                 View view = inflater.inflate(resId, null);
                ((ViewPager) collection).addView(view, 0);
                 textView = (TextView)view.findviewById(R.id.textvvvv);
                 return view;

            case 1:
                resId = R.layout.left;
                break;
            case 2:
                resId = R.layout.middle;
                break;
            case 3:
                resId = R.layout.right;
                break;
            case 4:
                resId = R.layout.farright;
                break;
            }


        }

        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);

        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);

        }

        @Override
        public Parcelable saveState() {
            return null;
        }
}

しかし、私がinstantiateItemのテキストを変更すると、スターンジはここにあります

textView.SetText("EEE");

うまく機能しますが、MyPageAdapter の外でテキストを変更できません。なぜですか?

4

2 に答える 2

0

ViewPager は View から findViewById() を継承するため、次のことはできません。

TextView textView = (TextView) viewPager.findViewById(...);
于 2012-06-05T09:12:55.377 に答える
0

MyPagerAdapterそうではなくstatic、アクセス方法は静的クラスに使用されます。をインスタンス化し、その参照を使用してメソッドPagerAdapterを呼び出し、getAdapter()findViewById(....)

編集:

あなたの活動であなたを宣言するときPagerAdapter、それからアダプターの参照を取得しようとします。以下のようなものです

PagerAdapter viewer = (PagerAdapter) findViewById(R.id.pageradapter);-->

viewer.getAdapter().findViewById(...)
于 2012-06-05T05:47:49.097 に答える