为什么片段不起作用

时间:2012-06-05 05:34:10

标签: android

我想在片段中的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中的文本时,starnge就在这里
textView.SetText("EEE");

效果很好,但是我无法更改MyPageAdapter以外的文字,为什么?

2 个答案:

答案 0 :(得分:0)

MyPagerAdapter不是static,您的访问方法将用于静态类。尝试实例化PagerAdapter并使用该引用调用getAdapter()方法并尝试使用findViewById(....)找到视图

修改

当您在活动中声明PagerAdapter时,尝试从中获取适配器的引用,如下所示

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

viewer.getAdapter().findViewById(...)

答案 1 :(得分:0)

ViewPager从View继承findViewById(),所以你不能这样做:

TextView textView = (TextView) viewPager.findViewById(...);